梦想小镇WIKI_BWIKI_哔哩哔哩
gamecenter_wiki_township
https://wiki.biligame.com/township/%E9%A6%96%E9%A1%B5
MediaWiki 1.37.0
first-letter
媒体文件
特殊
讨论
用户
用户讨论
梦想小镇
梦想小镇讨论
文件
文件讨论
MediaWiki
MediaWiki讨论
模板
模板讨论
帮助
帮助讨论
分类
分类讨论
属性
属性讨论
表单
表单讨论
概念
概念讨论
smw/schema
smw/schema talk
Rule
Rule talk
Widget
Widget talk
模块
模块讨论
Gadget
Gadget talk
Gadget definition
Gadget definition talk
Topic
首页
0
1
1
2019-08-14T06:40:05Z
MediaWiki default
0
wikitext
text/x-wiki
<strong>已安装MediaWiki。</strong>
请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 用户指导]以获取使用本wiki软件的信息!
== 入门 ==
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings MediaWiki配置设置列表]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans MediaWiki常见问题]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏]
d9b7ee8b27b108d6a4c6b4630283e3df8fbad568
34
1
2020-05-30T06:08:21Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h2">建造</div>
{{按钮|房屋|房屋}}
{{按钮|社区建筑|社区建筑}}
{{按钮|工厂|工厂}}
{{按钮|动物园|装饰物}}
{{按钮|特殊|特殊}}
<div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="sidebar-card" style="margin:0 0 20px 0">
<div class="bili-title-h1">关于WIKI</div>
<div class="bili-divider"></div>
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
<div class="sidebar-content"></div>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="sidebar-card" style="margin:0 0 20px 0">
<div class="bili-title-h1">关于游戏</div>
<div class="bili-divider"></div>
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
<div class="sidebar-content"></div>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
4e01effb48eb6f1fda7449bdc50f07f2acae42f1
MediaWiki:Smw import skos
8
2
2
2019-08-14T07:06:51Z
127.0.0.1
0
Semantic MediaWiki default vocabulary import
wikitext
text/x-wiki
http://www.w3.org/2004/02/skos/core#|[http://www.w3.org/TR/skos-reference/skos.rdf Simple Knowledge Organization System (SKOS)]
altLabel|Type:Monolingual text
broader|Type:Annotation URI
broaderTransitive|Type:Annotation URI
broadMatch|Type:Annotation URI
changeNote|Type:Text
closeMatch|Type:Annotation URI
Collection|Class
Concept|Class
ConceptScheme|Class
definition|Type:Text
editorialNote|Type:Text
exactMatch|Type:Annotation URI
example|Type:Text
hasTopConcept|Type:Page
hiddenLabel|Type:String
historyNote|Type:Text
inScheme|Type:Page
mappingRelation|Type:Page
member|Type:Page
memberList|Type:Page
narrower|Type:Annotation URI
narrowerTransitive|Type:Annotation URI
narrowMatch|Type:Annotation URI
notation|Type:Text
note|Type:Text
OrderedCollection|Class
prefLabel|Type:String
related|Type:Annotation URI
relatedMatch|Type:Annotation URI
scopeNote|Type:Text
semanticRelation|Type:Page
topConceptOf|Type:Page
[[Category:Imported vocabulary]]
4327e3118f75f756b955108e04693a361d19c2cb
MediaWiki:Smw import foaf
8
3
3
2019-08-14T07:06:54Z
127.0.0.1
0
Semantic MediaWiki default vocabulary import
wikitext
text/x-wiki
http://xmlns.com/foaf/0.1/|[http://www.foaf-project.org/ Friend Of A Friend]
name|Type:Text
homepage|Type:URL
mbox|Type:Email
mbox_sha1sum|Type:Text
depiction|Type:URL
phone|Type:Text
Person|Category
Organization|Category
knows|Type:Page
member|Type:Page
[[Category:Imported vocabulary]]
2be18fc91e334e0c7f23bea734cdc2a301fd86e8
MediaWiki:Smw import owl
8
4
4
2019-08-14T07:06:54Z
127.0.0.1
0
Semantic MediaWiki default vocabulary import
wikitext
text/x-wiki
http://www.w3.org/2002/07/owl#|[http://www.w3.org/2002/07/owl Web Ontology Language (OWL)]
AllDifferent|Category
allValuesFrom|Type:Page
AnnotationProperty|Category
backwardCompatibleWith|Type:Page
cardinality|Type:Number
Class|Category
comment|Type:Page
complementOf|Type:Page
DataRange|Category
DatatypeProperty|Category
DeprecatedClass|Category
DeprecatedProperty|Category
differentFrom|Type:Page
disjointWith|Type:Page
distinctMembers|Type:Page
equivalentClass|Type:Page
equivalentProperty|Type:Page
FunctionalProperty|Category
hasValue|Type:Page
imports|Type:Page
incompatibleWith|Type:Page
intersectionOf|Type:Page
InverseFunctionalProperty|Category
inverseOf|Type:Page
isDefinedBy|Type:Page
label|Type:Page
maxCardinality|Type:Number
minCardinality|Type:Number
Nothing|Category
ObjectProperty|Category
oneOf|Type:Page
onProperty|Type:Page
Ontology|Category
OntologyProperty|Category
owl|Type:Page
priorVersion|Type:Page
Restriction|Category
sameAs|Type:Page
seeAlso|Type:Page
someValuesFrom|Type:Page
SymmetricProperty|Category
Thing|Category
TransitiveProperty|Category
unionOf|Type:Page
versionInfo|Type:Page
[[Category:Imported vocabulary]]
c109cc4c667590611dc35b3d06655129c572809a
属性:Foaf:knows
102
5
5
2019-08-14T07:06:55Z
127.0.0.1
0
Semantic MediaWiki default vocabulary import
wikitext
text/x-wiki
* [[Imported from::foaf:knows]]
* [[Property description::A person known by this person (indicating some level of reciprocated interaction between the parties).@en]]
[[Category:Imported vocabulary]] {{DISPLAYTITLE:foaf:knows}}
e9134ab265b9bc923266ffa2bbcde2b59557202a
属性:Foaf:name
102
6
6
2019-08-14T07:06:55Z
127.0.0.1
0
Semantic MediaWiki default vocabulary import
wikitext
text/x-wiki
* [[Imported from::foaf:name]]
* [[Property description::A name for some thing or agent.@en]]
[[Category:Imported vocabulary]] {{DISPLAYTITLE:foaf:name}}
2a8b3537cd6d95e741d56a2fe5b824216824c2e3
属性:Foaf:homepage
102
7
7
2019-08-14T07:06:55Z
127.0.0.1
0
Semantic MediaWiki default vocabulary import
wikitext
text/x-wiki
* [[Imported from::foaf:homepage]]
* [[Property description::URL of the homepage of something, which is a general web resource.@en]]
[[Category:Imported vocabulary]] {{DISPLAYTITLE:foaf:homepage}}
083058f1760bcc251820336dbe29dee9a38516e6
属性:Owl:differentFrom
102
8
8
2019-08-14T07:06:56Z
127.0.0.1
0
Semantic MediaWiki default vocabulary import
wikitext
text/x-wiki
* [[Imported from::owl:differentFrom]]
* [[Property description::The property that determines that two given individuals are different.@en]]
[[Category:Imported vocabulary]] {{DISPLAYTITLE:owl:differentFrom}}
d706757d4fb8eff4bb5622ea05ea7cab2f3b1a0c
MediaWiki:Sitenotice
8
9
9
2020-05-21T04:02:10Z
394339
5
创建页面,内容为“本WIKI由[https://space.bilibili.com/13253902 Daikou]申请于2020年05月20日创建,编辑权限开放,如遇[https://wiki.biligame.com/wiki/%E5%85%B3%E4%BA%8…”
wikitext
text/x-wiki
本WIKI由[https://space.bilibili.com/13253902 Daikou]申请于2020年05月20日创建,编辑权限开放,如遇[https://wiki.biligame.com/wiki/%E5%85%B3%E4%BA%8E%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8%E7%99%BB%E5%BD%95%E7%8A%B6%E6%80%81%E5%BC%82%E5%B8%B8%E7%9A%84bug%E8%AF%B4%E6%98%8E Chrome浏览器登陆后无法编辑点这里] [https://t.bilibili.com/373216766651091864?tab=2 BWIKI反馈留言板]
1d0b9d695a433f73487b883200e3cd7d2e2685d4
房屋/小屋
0
10
10
2020-05-22T07:16:42Z
13253902
7
创建页面
wikitext
text/x-wiki
{{房屋
|等级=4、4、4、5
|金币=5
|人口=5
|经验=5
|时间=1
|占地=1
}}
18fa02e2155f9296b8ed31ceaf7865b831cfa454
13
10
2020-05-22T07:38:18Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=小屋
|等级=4、4、4、5 <!-- 用顿号隔开 -->
|金币=5
|人口=5
|经验=5
|时间=1 <!-- 换算到分钟 -->
|占地=1
}}
718f6989c67c0702e4f8ed43d73087439a46bed2
49
13
2020-06-05T05:48:13Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=小屋
|等级=4、4、4、5 <!-- 用顿号隔开 -->
|金币=5
|人口=5
|经验=5
|时间(天)=
|时间(时)=
|时间(分)=1
|时间(秒)=
|占地=1
}}
c669d5a67603b54900c38ec93fb7c30327f93b53
模板:房屋
10
11
11
2020-05-22T07:26:33Z
13253902
7
创建页面
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
{| class="wikitable"
| rowspan="2" | 图片
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
2149f388a14541b1c13a71c9789a1263757b0a52
12
11
2020-05-22T07:28:40Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
{| class="wikitable" style="text-align: center;"
| rowspan="2" | 图片
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
ebc48cac3c9b1e98a7d021da7aa5fd2093aeeae3
14
12
2020-05-23T03:14:59Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
{| class="wikitable" style="text-align: center;"
| rowspan="2" | 图片
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
[[分类:房屋]]
67b13867cfe8533ed71d375e6ee98762f6f4fd27
20
14
2020-05-30T04:41:22Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
{| class="wikitable" style="text-align: center;"
| rowspan="2" | [[文件:{{{中文|}}}.png]]
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
[[分类:房屋]]
782cffff4c1ed65e459bac8324453cbba41f6c02
25
20
2020-05-30T04:55:09Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
{| class="wikitable" style="text-align: center;width:100%"
| rowspan="2" | [[文件:{{{中文|}}}.png]]
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
[[分类:房屋]]
849f7f2357e2064cc666434cca3cb0863afc597a
28
25
2020-05-30T05:13:25Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
{| class="wikitable" style="text-align: center;width:100%"
| rowspan="2" | <includeonly>[[文件:{{{中文|}}}.png]]</includeonly>
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
<includeonly>[[分类:房屋]]</includeonly>
4893546e47b4c3358bc024e825f2b8d8c4af0de5
29
28
2020-05-30T05:30:02Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-3">
<includeonly>[[文件:{{{中文|}}}.png]]</includeonly>
</div>
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
43db158156fceae4d7a9138a643c2b6d89d608c1
30
29
2020-05-30T05:31:34Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
280775cfa5decc770a629749abab2d93587b134b
31
30
2020-05-30T05:39:32Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-8 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
13744c3cf14f43cd186524fee6b6797e79430cf0
32
31
2020-05-30T05:40:46Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-8 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{等级|}}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
22ccc76392f83dd5868cd360d33bd77c775ffacc
38
32
2020-06-04T07:03:50Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-8 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
dbd6c1b18fdac9b3fed4bd7d9185b06b9965fc6c
40
38
2020-06-04T07:13:17Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
805df94d5522e42551e055497b25586b465b07b2
41
40
2020-06-04T07:29:23Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
3726e6ace0ecac94ee3a0fd3b91f363d2a407bcc
42
41
2020-06-05T04:30:20Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
{{#arraysize:{{#arraymap:{{{等级|}}}|、|@||}}}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
ddf2248837673f9bf7c6126c552852abe9d1a9c2
43
42
2020-06-05T04:30:59Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
{{#arraysize:{{{等级|}}}}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
dabaa79be2ad3149205fa0d476bcd806ab0d9d63
44
43
2020-06-05T04:31:14Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
3726e6ace0ecac94ee3a0fd3b91f363d2a407bcc
45
44
2020-06-05T04:40:08Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
7bd0ac44ac4a770ec40d1471d02e097e2152f7e7
46
45
2020-06-05T04:40:33Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{时间|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
8c19d268dca08d0072c0c888058526543e2e7d40
47
46
2020-06-05T05:34:36Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{#expr: floor({{{时间|}}}/1440) }}天{{#expr: floor(({{{时间|}}}/1440 -{{#expr: floor({{{时间|}}}/1440) }})*24) }}时
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
3dcb84c1f2bf5393d30c6ab9f4f9fec35b7e09a9
48
47
2020-06-05T05:43:50Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|时间={{{时间|}}}
|占地={{{占地|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{{时间|}}}
| {{{人口|}}}
| {{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
214003123b21b4a67ddd7be205f5eebd06795941
50
48
2020-06-05T05:51:07Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| {{{人口|}}}
| {{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
c24171a99ae638fe50f8c4f40e4a941d50e24d73
房屋/科德角式小屋
0
12
15
2020-05-28T02:37:32Z
13253902
7
创建页面
wikitext
text/x-wiki
{{房屋
|中文=科德角式小屋
|等级=1、5、6、7、8 <!-- 用顿号隔开 -->
|金币=10
|人口=10
|经验=10
|时间=10 <!-- 换算到分钟 -->
|占地=1
}}
14d3f533055192c67d5942953750982c8e92ac10
常用编辑
0
13
16
2020-05-30T04:23:41Z
13253902
7
创建页面
wikitext
text/x-wiki
__TOC__
==整站==
{| class="wikitable text-center" width=100%
|-
| width=25% | [[https://wiki.biligame.com/township/index.php?title=首页&action=submit 首页编辑]]
| width=25% | [[https://wiki.biligame.com/township/MediaWiki:Sidebar 整站导航编辑]]
| width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.css 整站CSS编辑]]
| width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.js 整站JS编辑]]
|-
| [[https://wiki.biligame.com/township/index.php?title=首页&action=purge 首页刷新]]
|
|
|
|}
==新增==
{| class="wikitable text-center" width=100%
|-
! width=25% |
! width=25% |
! width=25% |
! width=25% |
|-
|
|
|
|
|-
|<inputbox>
type=create
preload=
placeholder=
width=20
break=no
</inputbox>
| <inputbox>
type=create
preload=
placeholder=
width=20
break=no
</inputbox>
|
|
|}
====
{| class="wikitable text-center" width=100%
|-
| width=25% |
| width=25% |
| width=25% |
| width=25% |
|-
|
|
|
|
|}
86d68a2493b9fa5ebd6f2d0b7bffda25404f2f6d
MediaWiki:Sidebar
8
14
17
2020-05-30T04:25:44Z
13253902
7
创建页面,内容为“* 首页 ** 首页|梦想小镇WIKI首页 ** recentchanges-url|recentchanges ** randompage-url|randompage ** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI…”
wikitext
text/x-wiki
* 首页
** 首页|梦想小镇WIKI首页
** recentchanges-url|recentchanges
** randompage-url|randompage
** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI首页
* 其他
** 常用编辑|常用编辑
b2e0c7eff7bfcd5798b6c67df61f20a81f242fc2
18
17
2020-05-30T04:29:08Z
13253902
7
wikitext
text/x-wiki
* 首页
** 首页|梦想小镇WIKI首页
** recentchanges-url|recentchanges
** randompage-url|randompage
** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI首页
* 建造
** 房屋
** 社区建筑
** 工厂
** 动物园
** 装饰物
** 特殊
* 物品
** 产品
* 统计
** 工厂升级金属表
** 扩地所需材料表
* 其他
** 常用编辑|常用编辑
7e283b2c29df8f4d4c9b35da16a4bdb2cf7dd8f1
19
18
2020-05-30T04:32:19Z
13253902
7
wikitext
text/x-wiki
* 首页
** 首页|梦想小镇WIKI首页
** recentchanges-url|recentchanges
** randompage-url|randompage
** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI首页
* 建造
** 房屋|房屋
** 社区建筑|社区建筑
** 工厂|工厂
** 动物园|动物园
** 装饰物|装饰物
** 特殊|特殊
* 物品
** 产品|产品
* 统计
** 工厂升级金属表|工厂升级金属表
** 扩地所需材料表|扩地所需材料表
* 其他
** 常用编辑|常用编辑
7435d427275bc3909bf5d2e07e21229f066fc9fd
文件:房屋 科德角式小屋.png
6
15
21
2020-05-30T04:43:05Z
13253902
7
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:首页背景.jpg
6
16
22
2020-05-30T04:49:27Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
MediaWiki:Common.css
8
17
23
2020-05-30T04:50:53Z
13253902
7
创建页面,内容为“/* 这里放置的CSS将应用于所有皮肤 */ body { background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg")…”
css
text/css
/* 这里放置的CSS将应用于所有皮肤 */
body {
background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg");
background-position:center left;
background-size: cover;
background-repeat: no-repeat;
background-attachment:fixed
}
/* 背景半透明 */
.game-bg { background:rgba(255,255,255,0.9527)!important;}
.wiki-header{ background:transparent!important;}
/* 图片自适应 */
.img-kk {
display: inline-block;
height: auto;
padding: 0px;
max-width:100%;
line-height: 1.42857143;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
/* 椭圆图片 */
.rounded-circle{
border-radius:50%;
}
ebb7766e48d2b1d30429df5f8e0726ebcfab5122
24
23
2020-05-30T04:54:09Z
13253902
7
css
text/css
/* 这里放置的CSS将应用于所有皮肤 */
body {
background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg");
background-position:center left;
background-size: cover;
background-repeat: no-repeat;
background-attachment:fixed
}
/* 背景半透明 */
.game-bg { background:rgba(255,255,255,0.8527)!important;}
.wiki-header{ background:transparent!important;}
/* 图片自适应 */
.img-kk {
display: inline-block;
height: auto;
padding: 0px;
max-width:100%;
line-height: 1.42857143;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
/* 椭圆图片 */
.rounded-circle{
border-radius:50%;
}
b0443807958a73c0c83e6ebff079f1cb24706c45
模板:面包屑
10
18
26
2020-05-30T04:56:52Z
13253902
7
创建页面
wikitext
text/x-wiki
<!-- 待定 -->
35eec436fdd7e41fdff417fa6541c1f1ce7109af
文件:房屋 小屋.png
6
19
27
2020-05-30T05:06:35Z
13253902
7
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
模板:按钮
10
20
33
2020-05-30T05:45:00Z
13253902
7
创建页面
wikitext
text/x-wiki
<includeonly>[[{{{1}}}|<span class="bili-section-normal section-wrap" style="margin:5px 5px 5px 0px">{{{2}}}</span>]]</includeonly><noinclude><pre>[[{{{1}}}|<span class="bili-section-normal section-wrap" style="margin:5px 5px 5px 0px">{{{2}}}</span>]]</pre></noinclude>
22fe6657a0225588440ecfe1e62f2627b4ed133d
文件:星级.png
6
21
35
2020-06-04T05:38:09Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
模板:小星级
10
22
36
2020-06-04T07:01:08Z
13253902
7
创建页面
wikitext
text/x-wiki
<div style="position: relative;display:inline-block;text-align:center;">
[[文件:星级.png|32px|link=]]
<span style="position: absolute;inline-size: 32px;text-shadow: 1px 1px 1px brown;left: -2px;top: 7px;color:white;">{{{1|}}}</span>
</div>
29f7d45964202e7d9d40e2cab558a821a6fc61f3
37
36
2020-06-04T07:02:04Z
13253902
7
wikitext
text/x-wiki
<noinclude>{{小星级|22}}</noinclude><includeonly>
<div style="position: relative;display:inline-block;text-align:center;">
[[文件:星级.png|32px|link=]]
<span style="position: absolute;inline-size: 32px;text-shadow: 1px 1px 1px brown;left: -2px;top: 7px;color:white;">{{{1|}}}</span>
</div></includeonly>
4559054450312853f0d4f98a16bdcc6f7dfbd500
39
37
2020-06-04T07:06:21Z
13253902
7
wikitext
text/x-wiki
<noinclude>{{小星级|2}}{{小星级|22}}{{小星级|222}}</noinclude><includeonly>
<div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|32px|link=]]<span style="position: absolute;inline-size: 32px;text-shadow: 1px 1px 1px brown;left: -2px;top: 7px;color:white;">{{{1|}}}</span>
</div></includeonly>
39db2917bc8b3464599d9a71202ebb6aad54e257
房屋/科德角式小屋
0
12
51
15
2020-06-05T06:00:24Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=科德角式小屋
|等级=1、5、6、7、8 <!-- 用顿号隔开 -->
|金币=10
|人口=10
|经验=10
|时间(天)=
|时间(时)=
|时间(分)=10
|时间(秒)=
|占地=1
}}
14f854af0da39e8ee8c23bdf09c7300f1e952f06
模板:房屋
10
11
52
50
2020-06-05T06:05:53Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| {{{人口|}}}
| {{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
5a33e948a178332fb742b5e134a01633f3818218
53
52
2020-06-05T06:10:34Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| +{{{人口|}}}
| +{{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
f0f5e3e4be1f1edc96ff4774fd252ddb27467749
64
53
2020-06-05T07:28:55Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| +{{{人口|}}}
| +{{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
204e3ebcc6cfac629146286d6b9ca5ba17ce3e5c
66
64
2020-06-05T07:31:52Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{{最大数量|}}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| +{{{人口|}}}
| +{{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
ca4ae7898dc06a534654b0706c7a04998aeec6fc
67
66
2020-06-05T07:32:16Z
13253902
7
撤销[[Special:Contributions/13253902|13253902]]([[User talk:13253902|讨论]])的版本66
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| +{{{人口|}}}
| +{{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
204e3ebcc6cfac629146286d6b9ca5ba17ce3e5c
房屋
0
23
54
2020-06-05T07:06:21Z
13253902
7
创建页面
wikitext
text/x-wiki
{{#ask:[[分类:房屋]]
|?中文
|?金币
|?人口
|link=none
|sort=金币
|headers=hide
|template=房屋表
|format=template
|limit=1000
}}
23f04849ea85697a9117ae80859e3b83456ded67
55
54
2020-06-05T07:13:13Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;"
! 房屋
! 解锁等级
! 所需金币
! 获得人口
! 建造时间
|-
{{#ask:[[分类:房屋]]
|?中文
|?等级
|?金币
|?人口
|?经验
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|headers=hide
|template=房屋表
|format=template
|limit=1000
}}
|}
472a0d6b67eda9d95c3c305d613e83784e630434
56
55
2020-06-05T07:14:12Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;"
! 房屋
! 解锁等级
! 所需金币
! 获得人口
! 建造时间
{{#ask:[[分类:房屋]]
|?中文
|?等级
|?金币
|?人口
|?经验
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|headers=hide
|template=房屋表
|format=template
|limit=1000
}}
|}
85e34f8224fec8a14ed347f9591ae12af6d338ec
60
56
2020-06-05T07:23:02Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;"
! 房屋
! 解锁等级
! 所需金币
! 获得人口
! 建造时间
{{#ask:[[分类:房屋]]
|?中文
|?等级
|?金币
|?人口
|?经验
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|order=desc
|headers=hide
|template=房屋表
|format=template
|limit=1000
}}
|}
e45a5ae8ee03948508e678fbc1865c68b863f424
62
60
2020-06-05T07:27:15Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;text-align:center;"
! 房屋
! 解锁等级
! 所需金币
! 获得人口
! 建造时间
{{#ask:[[分类:房屋]]
|?中文
|?等级
|?金币
|?人口
|?经验
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|order=desc
|headers=hide
|template=房屋表
|format=template
|limit=1000
}}
|}
a31702acd8e3e89e793cf3cb8a8c9256416f1371
65
62
2020-06-05T07:29:44Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;text-align:center;"
! 房屋
! 最大数量
! 所需金币
! 获得人口
! 建造时间
{{#ask:[[分类:房屋]]
|?中文
|?最大数量
|?金币
|?人口
|?经验
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|order=desc
|headers=hide
|template=房屋表
|format=template
|limit=1000
}}
|}
07d6e6ac8cd261e6eeb127fc9c3b124477b98612
模板:房屋表
10
24
57
2020-06-05T07:17:33Z
13253902
7
创建页面
wikitext
text/x-wiki
|-
|{{{1|}}}
|{{{2|}}}
|{{{3|}}}
|{{{4|}}}
|{{#if:{{{6|}}}|{{{6|}}}天}}{{#if:{{{7|}}}|{{{7}}}时}}{{#if:{{{8|}}}|{{{8|}}}分}}{{#if:{{{9|}}}|{{{9|}}}秒}}
11f69d2f7fd6cad943c90d48604c814244ba2b9f
58
57
2020-06-05T07:18:34Z
13253902
7
wikitext
text/x-wiki
|-
|{{{1|}}}
|{{{2|}}}
|{{{3|}}}
|{{{4|}}}
|{{#if:{{{6|}}}|{{{6|}}}天}}{{#if:{{{7|}}}|{{{7}}}时}}{{#if:{{{8|}}}|{{{8|}}}分}}{{#if:{{{9|}}}|{{{9|}}}秒}}
|-
1663dd1018b9fa07a360cf4fc0cfbbb7c2cc72e4
59
58
2020-06-05T07:21:46Z
13253902
7
wikitext
text/x-wiki
|-
|{{{2|}}}
|{{{3|}}}
|{{{4|}}}
|{{{5|}}}
|{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}}
|-
3d2a036b8b3b6a367fbab892c51fc9f7c653a72f
61
59
2020-06-05T07:25:15Z
13253902
7
wikitext
text/x-wiki
|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
|{{{3|}}}
|{{{4|}}}
|{{{5|}}}
|{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}}
|-
53e04ac765971d7c306d3c1d74e37c413821b34a
63
61
2020-06-05T07:27:44Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| {{{3|}}}
| {{{4|}}}
| +{{{5|}}}
| {{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}}
|-
</includeonly>
b3589a5b8bcc061aad9cfefc7aee861d7132fa28
文件:装饰物.png
6
25
68
2020-06-05T15:30:26Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
86
68
2020-06-05T17:11:26Z
13253902
7
13253902上传[[文件:装饰物.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋.png
6
26
69
2020-06-05T15:30:27Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
81
69
2020-06-05T17:11:24Z
13253902
7
13253902上传[[文件:房屋.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:耕种.png
6
27
70
2020-06-05T15:30:27Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
82
70
2020-06-05T17:11:24Z
13253902
7
13253902上传[[文件:耕种.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:工厂.png
6
28
71
2020-06-05T15:30:27Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
83
71
2020-06-05T17:11:24Z
13253902
7
13253902上传[[文件:工厂.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:社区建筑.png
6
29
72
2020-06-05T15:30:28Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
84
72
2020-06-05T17:11:25Z
13253902
7
13253902上传[[文件:社区建筑.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:特殊.png
6
30
73
2020-06-05T15:30:28Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
85
73
2020-06-05T17:11:25Z
13253902
7
13253902上传[[文件:特殊.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
模板:首页建造图标
10
31
74
2020-06-05T15:50:09Z
13253902
7
创建页面
wikitext
text/x-wiki
<noinclude>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}</noinclude><includeonly><div style="text-align:center;width:30%;display:inline-block;padding:8px;">[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]<br><big>[[{{{1|}}}|{{{2|}}}]]</big></div></includeonly>
905bea3d19221efa0fdac433a189c98d50fcead1
76
74
2020-06-05T16:28:52Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:6px;padding:8px;border: 1px solid darkgray;border-radius: 20px;"><big>[[{{{1|}}}|{{{2|}}}]]</big>
-----
[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div>
{{#css:
.index_build:hover{
transition: all 0.3s linear 0s;
border: 1px solid #a8a9e3;
background: khaki;}
}}</includeonly>
835eb9666759b3a8c54e78442a7d564100b8f6c7
77
76
2020-06-05T16:51:02Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:4px;padding:8px;border: 1px solid darkgray;border-radius: 20px;"><big>[[{{{1|}}}|{{{2|}}}]]</big>
-----
[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div>
{{#css:
.index_build:hover{
transition: all 0.3s linear 0s;
border: 1px solid #a8a9e3;
background: khaki;}
}}</includeonly>
616de8a21154b5c9e20c3998c2cc16acf4966f5e
78
77
2020-06-05T16:52:50Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;border: 1px solid darkgray;border-radius: 20px;"><big>[[{{{1|}}}|{{{2|}}}]]</big>
-----
[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div>
{{#css:
.index_build:hover{
transition: all 0.3s linear 0s;
border: 1px solid #a8a9e3;
background: khaki;}
}}</includeonly>
9f89502a024b968506d4fa996aca81ed449af64b
79
78
2020-06-05T16:59:54Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;border:1px solid rgba(0, 0, 0, 0.16);border-radius: 0px;"><big>[[{{{1|}}}|{{{2|}}}]]</big>
-----
[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div>
{{#css:
.index_build:hover{
transition: all 0.3s linear 0s;
border: 1px solid #a8a9e3;
background: khaki;}
}}</includeonly>
4fdb37a5bf2488edf96c940d158c8cd17d27d9be
80
79
2020-06-05T17:06:26Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;border:1px solid rgba(0, 0, 0, 0.16);border-radius: 0px;"><big>[[{{{1|}}}|{{{2|}}}]]</big>
-----
[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div>
{{#css:
.index_build:hover{
transition: all 0.3s linear 0s;
border: 1px solid #a8a9e3;
background: khaki;}
hr{
background-color:rgba(0, 0, 0, 0.16);}
}}</includeonly>
a57ce1687b77a105c318f6cd761ed0293dd6a9b8
88
80
2020-06-11T16:35:44Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;;border-radius: 8px;background:#e8dbb5;box-shadow:2px 2px 3px 1px #777;"><big>[[{{{1|}}}|{{{2|}}}]]</big>
-----
[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div>
{{#css:
.index_build:hover{
transition: all 0.3s;
-webkit-transition:all 0.3s; /* Safari */
background: khaki;}
hr{
background-color:rgba(0, 0, 0, 0.16);}
}}</includeonly>
8e4f78ce8209bcdbd9c46aa327e95488008ea0f7
90
88
2020-06-11T16:47:58Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;;border-radius: 8px;box-shadow:2px 2px 3px 1px #777;"><big>[[{{{1|}}}|{{{2|}}}]]</big>
-----
[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div>
{{#css:
.index_build{background: #e8dbb5;transition: all 0.5s;
-webkit-transition:all 0.5s; /* Safari */}
.index_build:hover{background: khaki;}
hr{
background-color:rgba(0, 0, 0, 0.16);}
}}</includeonly>
e5b1c10009ee4907a1faac1e29d57d6796c467bb
92
90
2020-06-11T16:52:39Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;;border-radius: 8px;box-shadow:2px 2px 3px 1px #777;"><big>[[{{{1|}}}|{{{2|}}}]]</big>
-----
[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div>
{{#css:
a{color:#73593F;}
a:visited{color:#73593F;}
.index_build{background: #e8dbb5;transition: all 0.5s;
-webkit-transition:all 0.5s; /* Safari */}
.index_build:hover{background: khaki;}
hr{
background-color:rgba(0, 0, 0, 0.16);}
}}</includeonly>
f2dcba000b11326f2f86cb98f5ba053b154db226
首页
0
1
75
34
2020-06-05T15:53:47Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h2">建造</div>
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
<div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="sidebar-card" style="margin:0 0 20px 0">
<div class="bili-title-h1">关于WIKI</div>
<div class="bili-divider"></div>
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
<div class="sidebar-content"></div>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="sidebar-card" style="margin:0 0 20px 0">
<div class="bili-title-h1">关于游戏</div>
<div class="bili-divider"></div>
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
<div class="sidebar-content"></div>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
88e31626a22f70b0a5ca3d917150645ff18df001
91
75
2020-06-11T16:49:56Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="sidebar-card" style="margin:0 0 20px 0">
<div class="bili-title-h1">关于WIKI</div>
<div class="bili-divider"></div>
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
<div class="sidebar-content"></div>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="sidebar-card" style="margin:0 0 20px 0">
<div class="bili-title-h1">关于游戏</div>
<div class="bili-divider"></div>
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
<div class="sidebar-content"></div>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
1ff88897c2151043df6f7ce629c8b525a8948f0d
93
91
2020-06-11T17:14:22Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="ts-title-head">关于WIKI</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="ts-title-head" style="margin-top:24px;">关于游戏</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
b7f506e6a9203832ac7f19c6140f96a7ff642b6a
94
93
2020-06-12T02:19:16Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<includeonly><div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}</includeonly>
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="ts-title-head">关于WIKI</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="ts-title-head" style="margin-top:24px;">关于游戏</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
d01510367a2a1a9ae33caf0947c78bd335192690
沙盒
0
32
87
2020-06-11T05:59:19Z
13253902
7
创建页面
wikitext
text/x-wiki
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-h2">建造</div>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
<div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}
</div>
{{#CSS:
.ts-h2{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;}
.ts-box{}
}}
541bd7fc57ac4af97d37c3e6e28ac42fb30ddcec
MediaWiki:Common.css
8
17
89
24
2020-06-11T16:47:02Z
13253902
7
css
text/css
/* 这里放置的CSS将应用于所有皮肤 */
body {
background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg");
background-position:center left;
background-size: cover;
background-repeat: no-repeat;
background-attachment:fixed
}
/* 背景半透明 */
.game-bg { background:rgba(255,255,255,0.8527)!important;}
.wiki-header{ background:transparent!important;}
/* 图片自适应 */
.img-kk {
display: inline-block;
height: auto;
padding: 0px;
max-width:100%;
line-height: 1.42857143;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
/* 椭圆图片 */
.rounded-circle{
border-radius:50%;
}
/* 首页建造 */
.ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;}
.ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;}
.ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;}
29e823e6485d3d6d37e380bf01c7ad07d1d004e0
MediaWiki:Common.js
8
33
95
2020-06-12T02:30:52Z
13253902
7
创建页面,内容为“/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理用户链接 */ /* 来源:异星工厂WIKI*/ $(".mw-userlink").e…”
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理用户链接 */
/* 来源:异星工厂WIKI*/
$(".mw-userlink").each(function(){
$(this).removeAttr("class");
$(this).attr("href",$(this).attr("href").replace(/^.+:(\d+).*/g, "https://space.bilibili.com/$1"));
$(this).attr("title",$(this).attr("title").replace(/(用户:)\d+.*/g, "$1"+$(this).parent()[0].children[0].innerHTML));
$(this).attr("style","color:#0066FF");
$(this).attr("target","_blank");
});
f04d617980215b02dd2c36ae96c76ec614faab88
模板:社区建筑
10
34
96
2020-06-13T04:21:14Z
13253902
7
创建页面
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
|
|-
! 解锁等级
|-
| {{{等级|}}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| +{{{人口|}}}
| +{{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
4d9830ac857269476a3644a81f25152dad624e42
99
96
2020-06-13T04:33:48Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|220px|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
|
|-
! 解锁等级
|-
| {{{等级|}}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| +{{{人口|}}}
| +{{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
477592e0b9728e14fa8a7d22cb54e7cd17d2d6fb
100
99
2020-06-13T04:35:07Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:8px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
|
|-
! 解锁等级
|-
| {{{等级|}}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| {{{金币|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| +{{{人口|}}}
| +{{{经验|}}}
| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
9889eb7ce5d1507a8ac0c39efd1a3b450b8938b5
杂货铺
0
35
97
2020-06-13T04:25:38Z
13253902
7
创建页面
wikitext
text/x-wiki
{{社区建筑
|中文=杂货铺
|等级=5
|金币=25
|人口=10
|经验=20
|现金=1
|占地=2×1
|玻璃=
|砖块=1
|混凝土路面=
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=2
|时间(秒)=
}}
58c2cb5610070c8daf928036019506c488c2daf4
文件:杂货铺.png
6
36
98
2020-06-13T04:32:06Z
13253902
7
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
模板:社区建筑
10
34
101
100
2020-06-13T05:09:07Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| {{{等级|}}}
| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| {{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3"|{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| +{{{人口|}}}
| +{{{经验|}}}
| +{{{现金|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
13bdb8401d94e5a738c622638c80c31bdde0c056
116
101
2020-06-13T16:01:46Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| {{小星级|{{{等级|}}}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
805203e4690e8bb72407868fda1d708a17bd9830
117
116
2020-06-13T16:13:23Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 16px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}111分
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
fcc226fe632d5ecd2cd75291d853e9dbc6559478
118
117
2020-06-13T16:17:59Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}111分
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
3e892dc371c69b4b1013891c8d1836fff62d30ac
119
118
2020-06-13T16:19:28Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
921177f7b35b3f815e1cc65855d9a13b4c5570ab
文件:时间.png
6
37
102
2020-06-13T06:03:30Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
143
102
2020-06-22T07:22:41Z
13253902
7
13253902上传[[文件:时间.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:现金.png
6
38
103
2020-06-13T06:03:30Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:占地.png
6
39
104
2020-06-13T06:03:30Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
109
104
2020-06-13T06:20:44Z
13253902
7
13253902上传[[文件:占地.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:获得经验.png
6
40
105
2020-06-13T06:03:31Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:金币.png
6
41
106
2020-06-13T06:03:31Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:人口.png
6
42
107
2020-06-13T06:06:53Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
108
107
2020-06-13T06:18:23Z
13253902
7
13253902上传[[文件:人口.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
模板:房屋
10
11
110
67
2020-06-13T06:21:09Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! 所需金币
! 建造时间
! 获得人口
! 获得经验
! 占地面积
|-
| [[文件:金币.png|x32px|link=]]{{{金币|}}}
| [[文件:时间.png|x32px|link=]]{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| [[文件:人口.png|x32px|link=]]+{{{人口|}}}
| [[文件:获得经验.png|x32px|link=]]+{{{经验|}}}
| [[文件:占地.png|x32px|link=]]{{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
2c8f02d884a61c447d06fb81889ecf5e67d75654
112
110
2020-06-13T07:12:00Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币<br>[[文件:金币.png|x40px|class=img-kk|link=]]
! width=20%|所需时间<br>[[文件:时间.png|x40px|class=img-kk|link=]]
! width=20%|获得人口<br>[[文件:人口.png|x40px|class=img-kk|link=]]
! width=20%|获得经验<br>[[文件:获得经验.png|x40px|class=img-kk|link=]]
! width=20%|占地面积<br>[[文件:占地.png|x40px|class=img-kk|link=]]
|-
| style="font-size:x-large;"| {{{金币|}}}
| style="font-size:x-large;"| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| +{{{人口|}}}
| style="font-size:x-large;"| +{{{经验|}}}
| style="font-size:x-large;"| {{{占地|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
92975162d6a42102f582216052859ed2df64b283
114
112
2020-06-13T15:13:49Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币
! width=20%|建造时间
! width=20%|占地面积
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! width=20%|获得人口
! width=20%|获得经验
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
b838657e5cda3b95495f4a53942ea05c7a4773c5
房屋/小屋
0
10
111
49
2020-06-13T06:21:34Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=小屋
|等级=4、4、4、5 <!-- 用顿号隔开 -->
|金币=5
|人口=5
|经验=5
|时间(天)=
|时间(时)=
|时间(分)=1
|时间(秒)=
|占地=1×1
}}
aa5cbf6dfdfaa8dcf8a88f9eadac7d7b6ee011db
MediaWiki:Common.css
8
17
113
89
2020-06-13T15:11:00Z
13253902
7
css
text/css
/* 这里放置的CSS将应用于所有皮肤 */
body {
background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg");
background-position:center left;
background-size: cover;
background-repeat: no-repeat;
background-attachment:fixed
}
/* 背景半透明 */
.game-bg { background:rgba(255,255,255,0.8527)!important;}
.wiki-header{ background:transparent!important;}
/* 文字不换行 */
.no{white-space:nowrap;}
/* 图片自适应 */
.img-kk {
display: inline-block;
height: auto;
padding: 0px;
max-width:100%;
line-height: 1.42857143;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
/* 椭圆图片 */
.rounded-circle{
border-radius:50%;
}
/* 首页建造 */
.ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;}
.ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;}
.ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;}
b7d9e28a09e395803d2e9eb8de7066f3361566bb
房屋/科德角式小屋
0
12
115
51
2020-06-13T15:17:44Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=科德角式小屋
|等级=1、5、6、7、8 <!-- 用顿号隔开 -->
|金币=10
|人口=10
|经验=10
|时间(天)=
|时间(时)=
|时间(分)=10
|时间(秒)=
|占地=1×1
}}
f5d24e37cf53b82e3f2052d9916d21bfa46556bf
MediaWiki:Common.js
8
33
120
95
2020-06-16T05:55:15Z
13253902
7
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理用户链接 */
/* 来源:异星工厂WIKI*/
$(".mw-userlink").each(function(){
$(this).removeAttr("class");
$(this).attr("href",$(this).attr("href").replace(/^.+:(\d+).*/g, "https://space.bilibili.com/$1"));
$(this).attr("title",$(this).attr("title").replace(/(用户:)\d+.*/g, "$1"+$(this).parent()[0].children[0].innerHTML));
$(this).attr("style","color:#0066FF");
$(this).attr("target","_blank");
});
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
ad0d054320818dd0fcc7d96b889fe21189d2d777
文件:房屋 牧人小舍.png
6
43
121
2020-06-17T02:51:59Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
梦想小镇:AutoWikiBrowser/CheckPage
4
44
122
2020-06-17T04:53:37Z
13253902
7
创建页面
wikitext
text/x-wiki
这一页面用于标明AutowikiBrowser所能使用的账号,要在您的站点使用AutoWikiBrowser,请创建页面“Project:AutoWikiBrowser/CheckPage”,并按如下格式输入需要许可的账号。
更多支持与帮助请查看[[wikipedia:Project:AWB]]。
==许可的账号==
===机器人===
<!--enabledusersbegins-->
<!--enabledbots-->
*裂炎
*13253902@裂炎
<!--enabledbotsends-->
8798ab225e4c03463fbf9725650adc0c3f57235f
模板:房屋表
10
24
123
63
2020-06-20T05:38:00Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| {{{3|}}}
| {{{4|}}}
| +{{{5|}}}
| {{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}}
</includeonly>
0a77e01eee0031ceeb6c7b3585ac1a7b1057a2bb
124
123
2020-06-20T05:42:32Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| style="font-size:xx-large;"| {{{3|}}}
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{5|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}}
</includeonly>
9168033b02179d1a2483bf1ca520674b17bdf40e
模板:社区建筑表
10
45
125
2020-06-20T05:53:25Z
13253902
7
创建页面
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}
| style="font-size:x-large;"| [[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
912def5be1b79a5dae2a689e39c65b721a2c4c28
127
125
2020-06-20T05:57:05Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>
{{#if:{{{5|}}}|<div style="display:inline;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
d05290c14efc62500585db5bdd552655027154de
131
127
2020-06-20T06:06:14Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>
{{#if:{{{5|}}}|<div style="display:inline-block;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
e0dceb50ce81d521c573fa93bc71d321fe9649c9
132
131
2020-06-20T06:07:48Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>
{{#if:{{{5|}}}|<div style="display:inline-block;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}
{{#if:{{{6|}}}|<div style="display:inline-block;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
d150e064cba78af59f6244880d82063e151d7814
134
132
2020-06-20T06:11:02Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>
{{#if:{{{5|}}}|<div style="display:inline-block;"> [[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}
{{#if:{{{6|}}}|<div style="display:inline-block;"> [[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}
{{#if:{{{7|}}}|<div style="display:inline-block;"> [[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
2ce8729cf8141c518f826721f02a2e25ed9e39b0
135
134
2020-06-20T06:12:55Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>
{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;"> [[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}
{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;"> [[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}
{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;"> [[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
760f3b69b7614914beb4cd165a6b1bae2297daa1
136
135
2020-06-20T06:13:20Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>
{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}
{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}
{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
0a288187997e0c08f07600a6ef4eabc18c6919fd
144
136
2020-06-25T07:37:36Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>
{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}
{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}
{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
c75251ecc93f6c119139f2b468e3b17265539405
社区建筑
0
46
126
2020-06-20T05:53:53Z
13253902
7
创建页面
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;text-align:center;"
! 社区建筑
! 解锁等级
! 所需金币
! 所需材料
! 建造时间
{{#ask:[[分类:社区建筑]]
|?中文
|?等级
|?金币
|?玻璃
|?砖块
|?混凝土路面
|?钻头
|?电锯
|?电钻
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|order=desc
|headers=hide
|template=社区建筑表
|format=template
|limit=1000
}}
|}
740df3d4aca271ef5e78fb7adae95cc319b37a63
128
126
2020-06-20T05:57:09Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;text-align:center;"
! 社区建筑
! 解锁等级
! 所需材料
! 建造时间
{{#ask:[[分类:社区建筑]]
|?中文
|?等级
|?金币
|?玻璃
|?砖块
|?混凝土路面
|?钻头
|?电锯
|?电钻
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|order=desc
|headers=hide
|template=社区建筑表
|format=template
|limit=1000
}}
|}
a5f225f448385a6c008b45da600f54c3c0b748f7
137
128
2020-06-20T06:18:43Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;text-align:center;"
! 社区建筑
! 解锁等级
! 所需材料
! 建造时间
{{#ask:[[分类:社区建筑]]
|?中文
|?等级
|?金币
|?玻璃
|?砖块
|?混凝土路面
|?钻头
|?电锯
|?电钻
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|order=asc
|headers=hide
|template=社区建筑表
|format=template
|limit=1000
}}
|}
c5c2b7ed5663762d5641a8dec7e79946eef90295
学校
0
47
129
2020-06-20T06:00:46Z
13253902
7
创建页面
wikitext
text/x-wiki
{{社区建筑
|中文=学校
|等级=5
|金币=30
|人口=20
|经验=40
|现金=1
|占地=2×1
|玻璃=1
|砖块=1
|混凝土路面=
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=10
|时间(秒)=
}}
c6fe751c4af7e1d0429b84351943a99b69d4510c
文件:玻璃.png
6
48
130
2020-06-20T06:04:37Z
13253902
7
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:砖块.png
6
49
133
2020-06-20T06:08:42Z
13253902
7
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:学校.png
6
50
138
2020-06-22T06:07:47Z
13253902
7
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
医院
0
51
139
2020-06-22T06:16:15Z
13253902
7
创建页面
wikitext
text/x-wiki
{{社区建筑
|中文=医院
|等级=6
|金币=40
|人口=25
|经验=50
|现金=1
|占地=2×1
|玻璃=1
|砖块=1
|混凝土路面=1
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=20
|时间(秒)=
}}
3c1691e2910678e5b9c4a752a93ada6447d1b33b
文件:医院.png
6
52
140
2020-06-22T06:16:35Z
13253902
7
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:混凝土路面.png
6
53
141
2020-06-22T06:17:46Z
13253902
7
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
模板:田地
10
54
142
2020-06-22T07:18:33Z
13253902
7
创建页面
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|经验={{{经验|}}}
|请求={{{请求|}}}
|商人={{{商人|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 所需金币
! 生长时间
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! 社团请求
! 商人市场
! 贩卖价格
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<includeonly>[[分类:田地]]</includeonly>
16fc9ff3fd6d3b68f3afcf012461d8a5f144ad6e
MediaWiki:Gadget-section-Editing
8
55
145
2020-07-16T06:49:39Z
13253902
7
创建页面
wikitext
text/x-wiki
编辑工具
81590250fc22fcaa1dcc37b855d8712a4480ced4
MediaWiki:Gadgets-definition
8
56
146
2020-07-16T06:50:11Z
13253902
7
创建页面,内容为“==Editing==”
wikitext
text/x-wiki
==Editing==
fbda3c4319ad0e6f82f915e7b354f8133f7f5637
147
146
2020-07-16T06:51:38Z
13253902
7
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
4bfcdc6a45e11a20546449aad78f321d03129630
MediaWiki:Gadget-BwikiBatchEditor
8
57
148
2020-07-16T06:52:25Z
13253902
7
创建页面,内容为“'''BwikiBatchEditor''':BWIKI批量页面编辑器。”
wikitext
text/x-wiki
'''BwikiBatchEditor''':BWIKI批量页面编辑器。
8c28ff02ed8719bab9d6b3191f12aecc8f9858da
MediaWiki:Gadget-BwikiBatchEditor.js
8
58
149
2020-07-16T06:53:01Z
13253902
7
创建页面,内容为“mw.loader.load("/factorio/load.php?modules=ext.gadget.BwikiBatchEditor&only=scripts");”
javascript
text/javascript
mw.loader.load("/factorio/load.php?modules=ext.gadget.BwikiBatchEditor&only=scripts");
f0119fe267e1e1d8a7ad50ecaa6c3a34c04b973a
沙盒
0
32
151
87
2020-07-16T07:38:33Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
1内容
2febf24f11782a91d0541d18ecc677bb87e11712
沙盒
0
32
152
151
2020-07-16T07:40:08Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
153
152
2020-07-16T07:41:12Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
123 内容
5cc007383bb999f6b33d4772a4a9b92250ebabad
首页
0
1
154
94
2020-07-28T12:09:08Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<includeonly><div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}</includeonly>
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="ts-title-head">关于WIKI</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
本WIKI现有 [[特殊:最近更改|<span style="padding:1px 5px;background:#eee;border: 1px solid #262626;border-radius: 4px;font-weight:bold">{{NUMBEROFPAGES}}</span>]] 个页面,以及 [[特殊:贡献得分|<span style="padding:1px 5px;background:#eee;border: 1px solid #262626;border-radius: 4px;font-weight:bold">{{NUMBEROFACTIVEUSERS}}</span>]] 位活跃编辑者。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="ts-title-head" style="margin-top:24px;">关于游戏</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
5d835c12aa080e9ad08e4c39b79903af9eb69def
157
154
2020-07-31T11:41:35Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<includeonly><div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}</includeonly>
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="ts-title-head">关于WIKI</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
本WIKI现有{{NUMBEROFUSERS}}名注册用户,[[特殊:最近更改|<span style="padding:1px 5px;background:#eee;border: 1px solid #262626;border-radius: 4px;font-weight:bold">{{NUMBEROFPAGES}}</span>]] 个页面,以及 [[特殊:贡献得分|<span style="padding:1px 5px;background:#eee;border: 1px solid #262626;border-radius: 4px;font-weight:bold">{{NUMBEROFACTIVEUSERS}}</span>]] 位活跃编辑者。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="ts-title-head" style="margin-top:24px;">关于游戏</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
a400d13e42f8512836d1bc72c7c1df15f278ec2e
158
157
2020-07-31T12:23:38Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<includeonly><div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}</includeonly>
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="ts-title-head">关于WIKI</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
<div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user">[[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style="">[[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil">[[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="ts-title-head" style="margin-top:24px;">关于游戏</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
7122d37db849bf79fa88c0560362cb47e281deb6
159
158
2020-07-31T12:35:28Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<includeonly><div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}</includeonly>
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="ts-title-head">关于WIKI</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
----
<p class="text-center">本WIKI遵循[https://creativecommons.org/licenses/by-nc-sa/3.0/ BY-NC-SA]协议。(特殊注明除外)</p>
<div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user">[[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style="">[[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil">[[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="ts-title-head" style="margin-top:24px;">关于游戏</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
7ffb11075eab40e50cd94f54f819717850154bf1
160
159
2020-07-31T12:40:43Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<includeonly><div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}</includeonly>
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="ts-title-head">关于WIKI</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
----
<p class="text-center">本WIKI遵循[https://creativecommons.org/licenses/by-nc-sa/3.0/ BY-NC-SA]协议。(特殊注明除外)</p>
<div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user"> [[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style=""> [[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil"> [[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="ts-title-head" style="margin-top:24px;">关于游戏</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
f10bfdc877536039fffaf010d27fa1b9b2c138e9
MediaWiki:Common.css
8
17
155
113
2020-07-29T09:09:38Z
13253902
7
css
text/css
/* 这里放置的CSS将应用于所有皮肤 */
body {
background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg");
background-position:center left;
background-size: cover;
background-repeat: no-repeat;
background-attachment:fixed
}
/* 背景半透明 */
.game-bg { background:rgba(255,255,255,0.8527)!important;}
.wiki-header{ background:transparent!important;}
/* 文字不换行 */
.no{white-space:nowrap;}
/* 图片自适应 */
.img-kk {
display: inline-block;
height: auto;
padding: 0px;
max-width:100%;
line-height: 1.42857143;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
/* 一级导航背景透明*/
.wiki-menu-li-1{
background:#FFF0!important;
}
.title_active{
background:#000!important;
}
/* 一级导航栏搜索高度修正*/
.wiki-header .wiki-nav .nav-search-box{
padding:8px 0;
}
@media (max-width: 768px) {
#simpleSearch1 #searchInput {
padding:0;}
}
/* 首页建造 */
.ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;}
.ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;}
.ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;}
8ab7bb52c7a08e803e0553d46a8125890d87af53
房屋/海螺屋
0
61
161
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=海螺屋
|等级=1、7、11、12<!-- 用顿号隔开 -->
|金币=20
|人口=20
|经验=20
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
ea238d52a493a6c499ae0d1506484b650b4fd1fa
190
161
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=海螺屋
|等级=1、7、11、12<!-- 用顿号隔开 -->
|金币=20
|人口=20
|经验=20
|时间(天)=__时间天__
|时间(时)=__时间时__
|时间(分)=30
|时间(秒)=__时间秒__
|占地=1×1
}}
c6afa82d10548bf2911c5d0157c078ab82991c9e
房屋/折顶式小屋
0
62
162
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=折顶式小屋
|等级=14、15、16、18<!-- 用顿号隔开 -->
|金币=160
|人口=40
|经验=40
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
53bfef17986c80515e72a51b6efb50e7d42c1fc3
195
162
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=折顶式小屋
|等级=14、15、16、18<!-- 用顿号隔开 -->
|金币=160
|人口=40
|经验=40
|时间(天)=__时间天__
|时间(时)=3
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×1
}}
19e7441e6025da20c049b7ffa95ce4c8c1db13a5
房屋/农舍
0
66
166
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=农舍
|等级=10、11、15<!-- 用顿号隔开 -->
|金币=60
|人口=30
|经验=30
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
29e132bd8319a98268e055bc1c7306d7560652a4
192
166
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=农舍
|等级=10、11、15<!-- 用顿号隔开 -->
|金币=60
|人口=30
|经验=30
|时间(天)=__时间天__
|时间(时)=1
|时间(分)=30
|时间(秒)=__时间秒__
|占地=1×1
}}
7029168dec287e37a075d3b025a8bf37953332e0
房屋/美式四角楼
0
67
167
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=美式四角楼
|等级=22、23、23、24<!-- 用顿号隔开 -->
|金币=385
|人口=55
|经验=55
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
2055ad66b7ebf2582fef243d84178d274da523bc
197
167
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=美式四角楼
|等级=22、23、23、24<!-- 用顿号隔开 -->
|金币=385
|人口=55
|经验=55
|时间(天)=__时间天__
|时间(时)=7
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×1
}}
9e2a11c27e29d9ee73c09ca8782b460c641ebeae
房屋/一厅一室房
0
68
168
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=一厅一室房
|等级=24、25、25、26<!-- 用顿号隔开 -->
|金币=540
|人口=60
|经验=60
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
79dfd1cc04e4fe819a69393428fe9ebcd84999de
199
168
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=一厅一室房
|等级=24、25、25、26<!-- 用顿号隔开 -->
|金币=540
|人口=60
|经验=60
|时间(天)=__时间天__
|时间(时)=7
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×1
}}
dd6e8ad70f8a7ba70fe06c1906b4d334a9658786
房屋/匠心小栋
0
69
169
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=匠心小栋
|等级=17、18、19、19、20<!-- 用顿号隔开 -->
|金币=225
|人口=45
|经验=45
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
636c8f239cb5faf0f2bbfb0f82444945fd7bc5f5
196
169
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=匠心小栋
|等级=17、18、19、19、20<!-- 用顿号隔开 -->
|金币=225
|人口=45
|经验=45
|时间(天)=__时间天__
|时间(时)=4
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×1
}}
f72bf92b5559a02841e11e4daa11227bdb07c6a7
房屋/复式公寓
0
71
171
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=复式公寓
|等级=26、27、27、28、29<!-- 用顿号隔开 -->
|金币=715
|人口=65
|经验=65
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
533e890e4b0ad704678630894f5c73c405ff69b0
200
171
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=复式公寓
|等级=26、27、27、28、29<!-- 用顿号隔开 -->
|金币=715
|人口=65
|经验=65
|时间(天)=__时间天__
|时间(时)=9
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×1
}}
4239ff0f41c22974c07817cd25627ac373f6d0b9
房屋/联排别墅
0
72
172
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=联排别墅
|等级=28、30、31、32<!-- 用顿号隔开 -->
|金币=910
|人口=70
|经验=70
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
61d0a105b50cdfab506e77b3a16450edd4e9f379
201
172
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=联排别墅
|等级=28、30、31、32<!-- 用顿号隔开 -->
|金币=910
|人口=70
|经验=70
|时间(天)=__时间天__
|时间(时)=10
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×1
}}
5504f6455d51c77693b36762ab57ec3c198ea50a
房屋/维多利亚联排别墅
0
73
173
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=维多利亚联排别墅
|等级=29、30、33、34、44<!-- 用顿号隔开 -->
|金币=1200
|人口=75
|经验=75
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
281be9d1d2d9dfb34de4086ce54aa2fe90002f5c
204
173
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=维多利亚联排别墅
|等级=29、30、33、34、44<!-- 用顿号隔开 -->
|金币=1200
|人口=75
|经验=75
|时间(天)=__时间天__
|时间(时)=12
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
f2cffe4deed8340fa6b196d40ab81a01f630b71a
房屋/花园式公寓
0
74
174
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=花园式公寓
|等级=31、35、37、39<!-- 用顿号隔开 -->
|金币=1440
|人口=80
|经验=80
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
23fa0dacb85dbabaad85fca570af9a131b45d4f0
203
174
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=花园式公寓
|等级=31、35、37、39<!-- 用顿号隔开 -->
|金币=1440
|人口=80
|经验=80
|时间(天)=__时间天__
|时间(时)=16
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
30e1f5065d22e8ae70ecf0b2bc8c1f40f9c5ef3c
房屋/共管公寓
0
75
175
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=32、33、36、38、40、42<!-- 用顿号隔开 -->
|金币=1700
|人口=85
|经验=85
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
2de4374888ad285a5861796a45f27801057576c2
202
175
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=32、33、36、38、40、42<!-- 用顿号隔开 -->
|金币=1700
|人口=85
|经验=85
|时间(天)=__时间天__
|时间(时)=18
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
1d9fcc0a5787b5a2e9f729c5a115e31f1f14d7a8
房屋/合租房
0
76
176
2020-08-02T14:56:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=合租房
|等级=37、38、45、47、58<!-- 用顿号隔开 -->
|金币=3000
|人口=100
|经验=100
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
8d5cd6d6766a3642afbc1ceed96a3d4c454c6f78
206
176
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=合租房
|等级=37、38、45、47、58<!-- 用顿号隔开 -->
|金币=3000
|人口=100
|经验=100
|时间(天)=__时间天__
|时间(时)=22
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
6adaacc05287cbc05322e54f2732f7737702cf0c
房屋/公寓大楼
0
77
177
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=公寓大楼
|等级=34、35、36、41、43、46<!-- 用顿号隔开 -->
|金币=2250
|人口=90
|经验=90
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
9a55963497a062447bc1b3b4e546db2c56720c23
205
177
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=公寓大楼
|等级=34、35、36、41、43、46<!-- 用顿号隔开 -->
|金币=2250
|人口=90
|经验=90
|时间(天)=__时间天__
|时间(时)=20
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
050fec61f56062f4a7fcd87d10b2a00afe2551e3
房屋/带花园的高层
0
78
178
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带花园的高层
|等级=39、40、41、48、62<!-- 用顿号隔开 -->
|金币=3850
|人口=110
|经验=110
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
4c3fa4ec80f85fe01b8569762639c5749ce91e90
207
178
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带花园的高层
|等级=39、40、41、48、62<!-- 用顿号隔开 -->
|金币=3850
|人口=110
|经验=110
|时间(天)=1
|时间(时)=__时间时__
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
2308d53d8c7508bbf5b63ccaf9a9097779f3eba8
房屋/带阁楼的高层建筑
0
79
179
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带阁楼的高层建筑
|等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 -->
|金币=6300
|人口=140
|经验=140
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
1ad1af867d54129e1aafba2d1c14d59c94658e79
房屋/普通高层
0
80
180
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=普通高层
|等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 -->
|金币=4800
|人口=120
|经验=120
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
1c557d397ca6638d491b3865641060b8f20dbd8e
房屋/光明屋
0
81
181
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=光明屋
|等级=50、51、64、84<!-- 用顿号隔开 -->
|金币=7500
|人口=150
|经验=150
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=2×1
}}
bbbac1a03f56cd11bbe1b37eecdad964cddf1f28
房屋/瓷砖高层
0
82
182
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=瓷砖高层
|等级=52、53、66、68<!-- 用顿号隔开 -->
|金币=9500
|人口=190
|经验=190
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
037b9d8b0db59e60f63394dd1be56c6850080c03
房屋/圆木小屋
0
83
183
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=圆木小屋
|等级=54、55、70、72<!-- 用顿号隔开 -->
|金币=11500
|人口=230
|经验=230
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
44baa02592d1e036c95a02d1e1211f67495cb36e
房屋/摩登高层
0
84
184
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=摩登高层
|等级=56、57、74<!-- 用顿号隔开 -->
|金币=13500
|人口=270
|经验=270
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
2e14cda398acff5296002f005622d726f65777c0
房屋/老房屋
0
85
185
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=老房屋
|等级=58、59、60、76、78<!-- 用顿号隔开 -->
|金币=16500
|人口=330
|经验=330
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
13a0fc63f0850d4d7990553ec70a975b4520be4a
房屋/双尖塔楼
0
86
186
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=双尖塔楼
|等级=68、70、84<!-- 用顿号隔开 -->
|金币=21000
|人口=420
|经验=420
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
ada1a858ecf5909a1402afb2cc9804cd19bf3545
房屋/商住综合楼
0
88
188
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=商住综合楼
|等级=72、74、76、82<!-- 用顿号隔开 -->
|金币=27600
|人口=460
|经验=460
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
f5e62903da84870b4f7695d7e638b338978a63e3
房屋/独户住房
0
89
189
2020-08-02T14:56:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=独户住房
|等级=78、80、82、84<!-- 用顿号隔开 -->
|金币=36400
|人口=520
|经验=520
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=2×2
}}
2baa7e3e15304b39a700e9e9802590992d09c426
房屋/牧人小舍
0
90
191
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=牧人小舍
|等级=1、1、5、6、9、10<!-- 用顿号隔开 -->
|金币=15
|人口=15
|经验=15
|时间(天)=__时间天__
|时间(时)=__时间时__
|时间(分)=20
|时间(秒)=__时间秒__
|占地=1×1
}}
238b99907e8596cad746ef06ab6f47d4e84d6458
房屋/别墅
0
91
193
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=别墅
|等级=8、9、13、14<!-- 用顿号隔开 -->
|金币=25
|人口=25
|经验=25
|时间(天)=__时间天__
|时间(时)=1
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×1
}}
6eeea67f05dd8f32e715996f03f26893eac99030
房屋/三角顶小屋
0
92
194
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=三角顶小屋
|等级=12、13、16、17<!-- 用顿号隔开 -->
|金币=105
|人口=35
|经验=35
|时间(天)=__时间天__
|时间(时)=2
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×1
}}
a86367dbd11b18075c3e2ec84c948043251b19f3
房屋/双层楼房
0
93
198
2020-08-02T15:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=双层楼房
|等级=20、21、21、22<!-- 用顿号隔开 -->
|金币=300
|人口=50
|经验=50
|时间(天)=__时间天__
|时间(时)=6
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×1
}}
24e4991af74203af3a2cd8f61f0b2113e3fdc75b
房屋/光明屋
0
81
208
181
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=光明屋
|等级=50、51、64、84<!-- 用顿号隔开 -->
|金币=7500
|人口=150
|经验=150
|时间(天)=1
|时间(时)=6
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=2×1
}}
c198a4b47ee7210f05241f97b93c2ded3f4ad8f4
239
208
2020-08-02T16:50:01Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=光明屋
|等级=50、51、64、84<!-- 用顿号隔开 -->
|金币=7500
|人口=150
|经验=150
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=2×1
}}
bbbac1a03f56cd11bbe1b37eecdad964cddf1f28
房屋/普通高层
0
80
209
180
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=普通高层
|等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 -->
|金币=4800
|人口=120
|经验=120
|时间(天)=1
|时间(时)=2
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
0938a4fc927788cb9ddad518162d7333ef4e65a8
237
209
2020-08-02T16:50:00Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=普通高层
|等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 -->
|金币=4800
|人口=120
|经验=120
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
1c557d397ca6638d491b3865641060b8f20dbd8e
房屋/带阁楼的高层建筑
0
79
210
179
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带阁楼的高层建筑
|等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 -->
|金币=6300
|人口=140
|经验=140
|时间(天)=1
|时间(时)=4
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
09212a174e0ff3bbffb2df255f23a2b9bd0e03cd
238
210
2020-08-02T16:50:00Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带阁楼的高层建筑
|等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 -->
|金币=6300
|人口=140
|经验=140
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
1ad1af867d54129e1aafba2d1c14d59c94658e79
房屋/瓷砖高层
0
82
211
182
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=瓷砖高层
|等级=52、53、66、68<!-- 用顿号隔开 -->
|金币=9500
|人口=190
|经验=190
|时间(天)=1
|时间(时)=8
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
2990fedea7a634609e19031a31619568849d44d3
240
211
2020-08-02T16:50:01Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=瓷砖高层
|等级=52、53、66、68<!-- 用顿号隔开 -->
|金币=9500
|人口=190
|经验=190
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
037b9d8b0db59e60f63394dd1be56c6850080c03
房屋/圆木小屋
0
83
212
183
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=圆木小屋
|等级=54、55、70、72<!-- 用顿号隔开 -->
|金币=11500
|人口=230
|经验=230
|时间(天)=1
|时间(时)=8
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
a373399e4d65c15f1601c560da0aff3ad784e39a
241
212
2020-08-02T16:50:01Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=圆木小屋
|等级=54、55、70、72<!-- 用顿号隔开 -->
|金币=11500
|人口=230
|经验=230
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
44baa02592d1e036c95a02d1e1211f67495cb36e
房屋/摩登高层
0
84
213
184
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=摩登高层
|等级=56、57、74<!-- 用顿号隔开 -->
|金币=13500
|人口=270
|经验=270
|时间(天)=1
|时间(时)=10
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
8bcee96f1d2cbf1f28b1b2a0812b2e3bceaaa92d
242
213
2020-08-02T16:50:02Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=摩登高层
|等级=56、57、74<!-- 用顿号隔开 -->
|金币=13500
|人口=270
|经验=270
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
2e14cda398acff5296002f005622d726f65777c0
房屋/原木屋
0
94
214
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=原木屋
|等级=62、64、66、80<!-- 用顿号隔开 -->
|金币=19000
|人口=380
|经验=380
|时间(天)=1
|时间(时)=12
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
cebee712041388d2fd2b86f1764f68b432c1c045
244
214
2020-08-02T16:50:03Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=原木屋
|等级=62、64、66、80<!-- 用顿号隔开 -->
|金币=19000
|人口=380
|经验=380
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
ace85eebb8b1900eb85a6bf1876654bccaa8e404
房屋/双尖塔楼
0
86
215
186
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=双尖塔楼
|等级=68、70、84<!-- 用顿号隔开 -->
|金币=21000
|人口=420
|经验=420
|时间(天)=1
|时间(时)=12
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
a216faa9c9f60924613b706bba3c9306d941590e
245
215
2020-08-02T16:50:03Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=双尖塔楼
|等级=68、70、84<!-- 用顿号隔开 -->
|金币=21000
|人口=420
|经验=420
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
ada1a858ecf5909a1402afb2cc9804cd19bf3545
房屋/老房屋
0
85
216
185
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=老房屋
|等级=58、59、60、76、78<!-- 用顿号隔开 -->
|金币=16500
|人口=330
|经验=330
|时间(天)=1
|时间(时)=10
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
044daae339ad44948238cdec930cdcaf59a7f7ac
243
216
2020-08-02T16:50:02Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=老房屋
|等级=58、59、60、76、78<!-- 用顿号隔开 -->
|金币=16500
|人口=330
|经验=330
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
13a0fc63f0850d4d7990553ec70a975b4520be4a
房屋/商住综合楼
0
88
217
188
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=商住综合楼
|等级=72、74、76、82<!-- 用顿号隔开 -->
|金币=27600
|人口=460
|经验=460
|时间(天)=1
|时间(时)=16
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=1×2
}}
287e53e589ed45f1706c5d8cdf3ef2f1d89b74c8
246
217
2020-08-02T16:50:03Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=商住综合楼
|等级=72、74、76、82<!-- 用顿号隔开 -->
|金币=27600
|人口=460
|经验=460
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
f5e62903da84870b4f7695d7e638b338978a63e3
房屋/独户住房
0
89
218
189
2020-08-02T15:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=独户住房
|等级=78、80、82、84<!-- 用顿号隔开 -->
|金币=36400
|人口=520
|经验=520
|时间(天)=1
|时间(时)=16
|时间(分)=__时间分__
|时间(秒)=__时间秒__
|占地=2×2
}}
87b076b13d3d16525293dbd70eec66671f410c23
247
218
2020-08-02T16:50:04Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=独户住房
|等级=78、80、82、84<!-- 用顿号隔开 -->
|金币=36400
|人口=520
|经验=520
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=2×2
}}
2baa7e3e15304b39a700e9e9802590992d09c426
248
247
2020-08-02T16:52:18Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=独户住房
|等级=78、80、82、84<!-- 用顿号隔开 -->
|金币=36400
|人口=520
|经验=520
|时间(天)=0
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=2×2
}}
51705da7d8fcd4e58147dfbdb3563a9f650c2819
房屋/牧人小舍
0
90
219
191
2020-08-02T16:49:53Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=牧人小舍
|等级=1、1、5、6、9、10<!-- 用顿号隔开 -->
|金币=15
|人口=15
|经验=15
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
3431df5c1c61390cb6b663ed1b635b0d99c85d74
249
219
2020-08-02T17:05:56Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=牧人小舍
|等级=1、1、5、6、9、10<!-- 用顿号隔开 -->
|金币=15
|人口=15
|经验=15
|时间(天)=null
|时间(时)=
|时间(分)=20
|时间(秒)=
|占地=1×1
}}
0ee9986f8e02dd4f579f002ad1dd936359b54bda
250
249
2020-08-02T17:06:26Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=牧人小舍
|等级=1、1、5、6、9、10<!-- 用顿号隔开 -->
|金币=15
|人口=15
|经验=15
|时间(天)=
|时间(时)=
|时间(分)=20
|时间(秒)=
|占地=1×1
}}
29aee94bc55ac21a87a803f7cf97e6037ae09205
房屋/海螺屋
0
61
220
190
2020-08-02T16:49:53Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=海螺屋
|等级=1、7、11、12<!-- 用顿号隔开 -->
|金币=20
|人口=20
|经验=20
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
ea238d52a493a6c499ae0d1506484b650b4fd1fa
251
220
2020-08-02T17:08:44Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=海螺屋
|等级=1、7、11、12<!-- 用顿号隔开 -->
|金币=20
|人口=20
|经验=20
|时间(天)=
|时间(时)=
|时间(分)=30
|时间(秒)=
|占地=1×1
}}
65149da49f1cb10bba03a86606385496e88a7255
房屋/别墅
0
91
221
193
2020-08-02T16:49:54Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=别墅
|等级=8、9、13、14<!-- 用顿号隔开 -->
|金币=25
|人口=25
|经验=25
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
394453631ce8f41935384553edea98ba6c7225c5
252
221
2020-08-02T17:08:44Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=别墅
|等级=8、9、13、14<!-- 用顿号隔开 -->
|金币=25
|人口=25
|经验=25
|时间(天)=
|时间(时)=1
|时间(分)=
|时间(秒)=
|占地=1×1
}}
05eb11375c9f1b40053edb79dd42f642f85fc697
房屋/农舍
0
66
222
192
2020-08-02T16:49:54Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=农舍
|等级=10、11、15<!-- 用顿号隔开 -->
|金币=60
|人口=30
|经验=30
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
29e132bd8319a98268e055bc1c7306d7560652a4
253
222
2020-08-02T17:08:45Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=农舍
|等级=10、11、15<!-- 用顿号隔开 -->
|金币=60
|人口=30
|经验=30
|时间(天)=
|时间(时)=1
|时间(分)=30
|时间(秒)=
|占地=1×1
}}
4091d4edae2174be77c4140851421512f7e69c03
房屋/三角顶小屋
0
92
223
194
2020-08-02T16:49:54Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=三角顶小屋
|等级=12、13、16、17<!-- 用顿号隔开 -->
|金币=105
|人口=35
|经验=35
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
4ab3cee9aa8e8a80e2622e54089628d8201ba1cc
254
223
2020-08-02T17:08:45Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=三角顶小屋
|等级=12、13、16、17<!-- 用顿号隔开 -->
|金币=105
|人口=35
|经验=35
|时间(天)=
|时间(时)=2
|时间(分)=
|时间(秒)=
|占地=1×1
}}
0b6aed8292afe2a6ba863727e06ffcce0d3fc590
房屋/折顶式小屋
0
62
224
195
2020-08-02T16:49:55Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=折顶式小屋
|等级=14、15、16、18<!-- 用顿号隔开 -->
|金币=160
|人口=40
|经验=40
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
53bfef17986c80515e72a51b6efb50e7d42c1fc3
255
224
2020-08-02T17:08:45Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=折顶式小屋
|等级=14、15、16、18<!-- 用顿号隔开 -->
|金币=160
|人口=40
|经验=40
|时间(天)=
|时间(时)=3
|时间(分)=
|时间(秒)=
|占地=1×1
}}
af70904016d34703defd9f5a8efdff2bcab5d750
房屋/匠心小栋
0
69
225
196
2020-08-02T16:49:55Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=匠心小栋
|等级=17、18、19、19、20<!-- 用顿号隔开 -->
|金币=225
|人口=45
|经验=45
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
636c8f239cb5faf0f2bbfb0f82444945fd7bc5f5
256
225
2020-08-02T17:08:46Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=匠心小栋
|等级=17、18、19、19、20<!-- 用顿号隔开 -->
|金币=225
|人口=45
|经验=45
|时间(天)=
|时间(时)=4
|时间(分)=
|时间(秒)=
|占地=1×1
}}
69a8f24db070a578571b05344940eeee67897545
房屋/双层楼房
0
93
226
198
2020-08-02T16:49:55Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=双层楼房
|等级=20、21、21、22<!-- 用顿号隔开 -->
|金币=300
|人口=50
|经验=50
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
f038274f2fc88148f0e85c5d44ba5ab886be6847
257
226
2020-08-02T17:08:46Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=双层楼房
|等级=20、21、21、22<!-- 用顿号隔开 -->
|金币=300
|人口=50
|经验=50
|时间(天)=
|时间(时)=6
|时间(分)=
|时间(秒)=
|占地=1×1
}}
bcb13568dfa00fe5b00e8fd193301a6813217770
房屋/美式四角楼
0
67
227
197
2020-08-02T16:49:56Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=美式四角楼
|等级=22、23、23、24<!-- 用顿号隔开 -->
|金币=385
|人口=55
|经验=55
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
2055ad66b7ebf2582fef243d84178d274da523bc
房屋/一厅一室房
0
68
228
199
2020-08-02T16:49:56Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=一厅一室房
|等级=24、25、25、26<!-- 用顿号隔开 -->
|金币=540
|人口=60
|经验=60
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
79dfd1cc04e4fe819a69393428fe9ebcd84999de
房屋/复式公寓
0
71
229
200
2020-08-02T16:49:57Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=复式公寓
|等级=26、27、27、28、29<!-- 用顿号隔开 -->
|金币=715
|人口=65
|经验=65
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
533e890e4b0ad704678630894f5c73c405ff69b0
房屋/联排别墅
0
72
230
201
2020-08-02T16:49:57Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=联排别墅
|等级=28、30、31、32<!-- 用顿号隔开 -->
|金币=910
|人口=70
|经验=70
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×1
}}
61d0a105b50cdfab506e77b3a16450edd4e9f379
房屋/维多利亚联排别墅
0
73
231
204
2020-08-02T16:49:57Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=维多利亚联排别墅
|等级=29、30、33、34、44<!-- 用顿号隔开 -->
|金币=1200
|人口=75
|经验=75
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
281be9d1d2d9dfb34de4086ce54aa2fe90002f5c
房屋/花园式公寓
0
74
232
203
2020-08-02T16:49:58Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=花园式公寓
|等级=31、35、37、39<!-- 用顿号隔开 -->
|金币=1440
|人口=80
|经验=80
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
23fa0dacb85dbabaad85fca570af9a131b45d4f0
房屋/共管公寓
0
75
233
202
2020-08-02T16:49:58Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=32、33、36、38、40、42<!-- 用顿号隔开 -->
|金币=1700
|人口=85
|经验=85
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
2de4374888ad285a5861796a45f27801057576c2
房屋/公寓大楼
0
77
234
205
2020-08-02T16:49:59Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=公寓大楼
|等级=34、35、36、41、43、46<!-- 用顿号隔开 -->
|金币=2250
|人口=90
|经验=90
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
9a55963497a062447bc1b3b4e546db2c56720c23
房屋/合租房
0
76
235
206
2020-08-02T16:49:59Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=合租房
|等级=37、38、45、47、58<!-- 用顿号隔开 -->
|金币=3000
|人口=100
|经验=100
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
8d5cd6d6766a3642afbc1ceed96a3d4c454c6f78
房屋/带花园的高层
0
78
236
207
2020-08-02T16:49:59Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带花园的高层
|等级=39、40、41、48、62<!-- 用顿号隔开 -->
|金币=3850
|人口=110
|经验=110
|时间(天)=__时间(天)__
|时间(时)=__时间(时)__
|时间(分)=__时间(分)__
|时间(秒)=__时间(秒)__
|占地=1×2
}}
4c3fa4ec80f85fe01b8569762639c5749ce91e90
房屋/美式四角楼
0
67
258
227
2020-08-02T17:08:46Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=美式四角楼
|等级=22、23、23、24<!-- 用顿号隔开 -->
|金币=385
|人口=55
|经验=55
|时间(天)=
|时间(时)=7
|时间(分)=
|时间(秒)=
|占地=1×1
}}
b05b39fc7c03dc225780178db67d76cbb7a7d0f1
房屋/一厅一室房
0
68
259
228
2020-08-02T17:08:47Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=一厅一室房
|等级=24、25、25、26<!-- 用顿号隔开 -->
|金币=540
|人口=60
|经验=60
|时间(天)=
|时间(时)=7
|时间(分)=
|时间(秒)=
|占地=1×1
}}
f959eabfeb7705644897f061d2929a41901c686d
房屋/复式公寓
0
71
260
229
2020-08-02T17:08:47Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=复式公寓
|等级=26、27、27、28、29<!-- 用顿号隔开 -->
|金币=715
|人口=65
|经验=65
|时间(天)=
|时间(时)=9
|时间(分)=
|时间(秒)=
|占地=1×1
}}
9dc6e9539ad73fb71e695676f3664770e8244d5d
房屋/联排别墅
0
72
261
230
2020-08-02T17:08:48Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=联排别墅
|等级=28、30、31、32<!-- 用顿号隔开 -->
|金币=910
|人口=70
|经验=70
|时间(天)=
|时间(时)=10
|时间(分)=
|时间(秒)=
|占地=1×1
}}
5b0c63405f9ea9bf49bc388de7b4367de7e1a2dd
房屋/维多利亚联排别墅
0
73
262
231
2020-08-02T17:08:48Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=维多利亚联排别墅
|等级=29、30、33、34、44<!-- 用顿号隔开 -->
|金币=1200
|人口=75
|经验=75
|时间(天)=
|时间(时)=12
|时间(分)=
|时间(秒)=
|占地=1×2
}}
2665741fc4bce27223bbfb55a5778b4876e48f58
房屋/花园式公寓
0
74
263
232
2020-08-02T17:08:48Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=花园式公寓
|等级=31、35、37、39<!-- 用顿号隔开 -->
|金币=1440
|人口=80
|经验=80
|时间(天)=
|时间(时)=16
|时间(分)=
|时间(秒)=
|占地=1×2
}}
40609a3d274be806a09c541a80e122d00905ce85
房屋/共管公寓
0
75
264
233
2020-08-02T17:08:49Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=32、33、36、38、40、42<!-- 用顿号隔开 -->
|金币=1700
|人口=85
|经验=85
|时间(天)=
|时间(时)=18
|时间(分)=
|时间(秒)=
|占地=1×2
}}
d1bb5855503fb8d8199fa5a7afeb37ffc534aace
房屋/公寓大楼
0
77
265
234
2020-08-02T17:08:49Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=公寓大楼
|等级=34、35、36、41、43、46<!-- 用顿号隔开 -->
|金币=2250
|人口=90
|经验=90
|时间(天)=
|时间(时)=20
|时间(分)=
|时间(秒)=
|占地=1×2
}}
19c94fbe28344be2a43c3fa7242a51b2fa3ae089
房屋/合租房
0
76
266
235
2020-08-02T17:08:49Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=合租房
|等级=37、38、45、47、58<!-- 用顿号隔开 -->
|金币=3000
|人口=100
|经验=100
|时间(天)=
|时间(时)=22
|时间(分)=
|时间(秒)=
|占地=1×2
}}
c4cd36f47a00c4131b77923b1939f6b50570f195
房屋/带花园的高层
0
78
267
236
2020-08-02T17:08:50Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带花园的高层
|等级=39、40、41、48、62<!-- 用顿号隔开 -->
|金币=3850
|人口=110
|经验=110
|时间(天)=1
|时间(时)=
|时间(分)=
|时间(秒)=
|占地=1×2
}}
81f5931dd514b70647abcafaa2291665cb86b945
房屋/普通高层
0
80
268
237
2020-08-02T17:08:50Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=普通高层
|等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 -->
|金币=4800
|人口=120
|经验=120
|时间(天)=1
|时间(时)=2
|时间(分)=
|时间(秒)=
|占地=1×2
}}
0cc211115b21b814e5beed4e9016d682e7c94825
房屋/带阁楼的高层建筑
0
79
269
238
2020-08-02T17:08:51Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带阁楼的高层建筑
|等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 -->
|金币=6300
|人口=140
|经验=140
|时间(天)=1
|时间(时)=4
|时间(分)=
|时间(秒)=
|占地=1×2
}}
99820036334f81c310cbbc8f7dec0306dadefb3f
房屋/光明屋
0
81
270
239
2020-08-02T17:08:51Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=光明屋
|等级=50、51、64、84<!-- 用顿号隔开 -->
|金币=7500
|人口=150
|经验=150
|时间(天)=1
|时间(时)=6
|时间(分)=
|时间(秒)=
|占地=2×1
}}
e8415353b04f8286f90a75fabb1db84a5ec7f57e
房屋/瓷砖高层
0
82
271
240
2020-08-02T17:08:51Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=瓷砖高层
|等级=52、53、66、68<!-- 用顿号隔开 -->
|金币=9500
|人口=190
|经验=190
|时间(天)=1
|时间(时)=8
|时间(分)=
|时间(秒)=
|占地=1×2
}}
92f5a4a8cc200542c8dbbe80162a8255aa0985c6
房屋/圆木小屋
0
83
272
241
2020-08-02T17:08:52Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=圆木小屋
|等级=54、55、70、72<!-- 用顿号隔开 -->
|金币=11500
|人口=230
|经验=230
|时间(天)=1
|时间(时)=8
|时间(分)=
|时间(秒)=
|占地=1×2
}}
ecf54634d70a7d4c2c57e923bf831a1c43641614
房屋/摩登高层
0
84
273
242
2020-08-02T17:08:52Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=摩登高层
|等级=56、57、74<!-- 用顿号隔开 -->
|金币=13500
|人口=270
|经验=270
|时间(天)=1
|时间(时)=10
|时间(分)=
|时间(秒)=
|占地=1×2
}}
7be52e5ab632c35b68a9de10bb27a7802a7fd37c
房屋/老房屋
0
85
274
243
2020-08-02T17:08:52Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=老房屋
|等级=58、59、60、76、78<!-- 用顿号隔开 -->
|金币=16500
|人口=330
|经验=330
|时间(天)=1
|时间(时)=10
|时间(分)=
|时间(秒)=
|占地=1×2
}}
e9a42edbbef59e0ba26808df5b142353f0ace3e1
房屋/原木屋
0
94
275
244
2020-08-02T17:08:53Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=原木屋
|等级=62、64、66、80<!-- 用顿号隔开 -->
|金币=19000
|人口=380
|经验=380
|时间(天)=1
|时间(时)=12
|时间(分)=
|时间(秒)=
|占地=1×2
}}
6bbaf277885b8425e5366667996afc32ea94b37d
房屋/双尖塔楼
0
86
276
245
2020-08-02T17:08:53Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=双尖塔楼
|等级=68、70、84<!-- 用顿号隔开 -->
|金币=21000
|人口=420
|经验=420
|时间(天)=1
|时间(时)=12
|时间(分)=
|时间(秒)=
|占地=1×2
}}
0fa86dbfb55d299189a13e4852537950756565f0
房屋/商住综合楼
0
88
277
246
2020-08-02T17:08:54Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=商住综合楼
|等级=72、74、76、82<!-- 用顿号隔开 -->
|金币=27600
|人口=460
|经验=460
|时间(天)=1
|时间(时)=16
|时间(分)=
|时间(秒)=
|占地=1×2
}}
a4f3e258b43e38c5cb69616aeed931959c5a72b7
房屋/独户住房
0
89
278
248
2020-08-02T17:08:54Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=独户住房
|等级=78、80、82、84<!-- 用顿号隔开 -->
|金币=36400
|人口=520
|经验=520
|时间(天)=1
|时间(时)=16
|时间(分)=
|时间(秒)=
|占地=2×2
}}
28b86b144abc9ecc0424bb1e9ecb27e9bfb0b97b
MediaWiki:Common.css
8
17
279
155
2020-08-02T17:14:32Z
13253902
7
css
text/css
/* 这里放置的CSS将应用于所有皮肤 */
body {
background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg");
background-position:center left;
background-size: cover;
background-repeat: no-repeat;
background-attachment:fixed
}
/* 背景半透明 */
.game-bg { background:rgba(255,255,255,0.8527)!important;}
.wiki-header{ background:transparent!important;}
/* 文字不换行 */
.no{white-space:nowrap;}
/* 图片自适应 */
.img-kk {
display: inline-block;
height: auto;
padding: 0px;
max-width:100%;
line-height: 1.42857143;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
/* 一级导航背景透明*/
.wiki-menu-li-1{
background:rgba(0,0,0,0)!important;
}
.title_active{
background:#000!important;
}
/* 一级导航栏搜索高度修正*/
.wiki-header .wiki-nav .nav-search-box{
padding:8px 0;
}
@media (max-width: 768px) {
#simpleSearch1 #searchInput {
padding:0;}
}
/* 首页建造 */
.ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;}
.ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;}
.ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;}
b8e9e21ec88fe2fc050a93c811a2359ad8df8e94
属性:金币
102
95
280
2020-08-02T17:28:00Z
13253902
7
创建页面,内容为“[[Has type::Number]]”
wikitext
text/x-wiki
[[Has type::Number]]
b1464d55936837c2f34d09bb082369be94a5ad1c
282
280
2020-08-02T17:43:44Z
13253902
7
wikitext
text/x-wiki
这是类型为[[具有类型::数值型]]的属性。
1f072ab2c462755dfd937aaf5cf37ada0ddaac6e
房屋
0
23
281
65
2020-08-02T17:35:34Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;text-align:center;"
! 房屋
! 最大数量
! 所需金币
! 获得人口
! 建造时间
{{#ask:[[分类:房屋]]
|?中文
|?最大数量
|?金币
|?人口
|?经验
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|order=asc
|headers=hide
|template=房屋表
|format=template
|limit=1000
}}
|}
14aa70045a0f3cade156a92acc3395bd2a6fcad5
属性:经验
102
96
283
2020-08-02T17:44:43Z
13253902
7
创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。”
wikitext
text/x-wiki
这是类型为[[具有类型::数值型]]的属性。
1f072ab2c462755dfd937aaf5cf37ada0ddaac6e
属性:等级
102
97
284
2020-08-02T17:45:26Z
13253902
7
创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。”
wikitext
text/x-wiki
这是类型为[[具有类型::数值型]]的属性。
1f072ab2c462755dfd937aaf5cf37ada0ddaac6e
属性:最大数量
102
98
285
2020-08-02T17:45:58Z
13253902
7
创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。”
wikitext
text/x-wiki
这是类型为[[具有类型::数值型]]的属性。
1f072ab2c462755dfd937aaf5cf37ada0ddaac6e
属性:时间(分)
102
99
286
2020-08-02T17:46:16Z
13253902
7
创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。”
wikitext
text/x-wiki
这是类型为[[具有类型::数值型]]的属性。
1f072ab2c462755dfd937aaf5cf37ada0ddaac6e
属性:人口
102
100
287
2020-08-02T17:46:25Z
13253902
7
创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。”
wikitext
text/x-wiki
这是类型为[[具有类型::数值型]]的属性。
1f072ab2c462755dfd937aaf5cf37ada0ddaac6e
文件:房屋 独户住房.png
6
101
288
2020-08-03T15:43:30Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 复式公寓.png
6
102
289
2020-08-03T15:43:30Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 公寓大楼.png
6
103
290
2020-08-03T15:43:31Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 共管公寓.png
6
104
291
2020-08-03T15:43:31Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 光明屋.png
6
105
292
2020-08-03T15:43:32Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 海螺屋.png
6
106
293
2020-08-03T15:43:32Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 合租房.png
6
107
294
2020-08-03T15:43:33Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 花园式公寓.png
6
108
295
2020-08-03T15:43:33Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 匠心小栋.png
6
109
296
2020-08-03T15:43:34Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 科德角式小屋.png
6
15
297
21
2020-08-03T15:43:34Z
13253902
7
13253902上传[[文件:科德角式小屋.png]]的新版本
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:房屋 老房屋.png
6
110
298
2020-08-03T15:43:34Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 联排别墅.png
6
111
299
2020-08-03T15:43:35Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 美式四角楼.png
6
112
300
2020-08-03T15:43:35Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 摩登高层.png
6
113
301
2020-08-03T15:43:36Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 农舍.png
6
114
302
2020-08-03T15:43:36Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 普通高层.png
6
115
303
2020-08-03T15:43:37Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 三角顶小屋.png
6
116
304
2020-08-03T15:43:37Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 商住综合楼.png
6
117
305
2020-08-03T15:43:38Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 双层楼房.png
6
118
306
2020-08-03T15:43:38Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 双尖塔楼.png
6
119
307
2020-08-03T15:43:39Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 维多利亚联排别墅.png
6
120
308
2020-08-03T15:43:39Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 小屋.png
6
19
309
27
2020-08-03T15:43:39Z
13253902
7
13253902上传[[文件:小屋.png]]的新版本
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:房屋 一厅一室房.png
6
121
310
2020-08-03T15:43:40Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
318
310
2020-08-03T15:45:10Z
13253902
7
13253902移动页面[[文件:一听一室房.png]]至[[文件:一厅一室房.png]],不留重定向
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 原木屋.png
6
122
311
2020-08-03T15:43:40Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 圆木小屋.png
6
123
312
2020-08-03T15:43:41Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 折顶式小屋.png
6
124
313
2020-08-03T15:43:41Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 别墅.png
6
125
314
2020-08-03T15:43:42Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 瓷砖高层.png
6
126
315
2020-08-03T15:43:42Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带阁楼的高层建筑.png
6
127
316
2020-08-03T15:43:42Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带花园的高层.png
6
128
317
2020-08-03T15:43:43Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 摩登高层.png
6
113
319
301
2020-08-03T15:45:52Z
13253902
7
13253902移动页面[[文件:摩登高楼.png]]至[[文件:摩登高层.png]],不留重定向
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
杂货铺
0
35
320
97
2020-08-03T16:07:13Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=杂货铺
|等级=5
|金币=25
|人口=15
|经验=30
|现金=1
|占地=2×2
|玻璃=
|砖块=1
|混凝土路面=
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=2
|时间(秒)=
}}
81faef2b8f9d106fc55ee3470c9f8a768dddc003
学校
0
47
321
129
2020-08-03T16:07:13Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=学校
|等级=5
|金币=30
|人口=20
|经验=40
|现金=1
|占地=1×2
|玻璃=1
|砖块=1
|混凝土路面=
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=10
|时间(秒)=
}}
111cdf98f7c97def4c32a68df3f9bd95189f822a
医院
0
51
322
139
2020-08-03T16:07:14Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=医院
|等级=6
|金币=40
|人口=25
|经验=50
|现金=1
|占地=1×2
|玻璃=1
|砖块=1
|混凝土路面=1
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=20
|时间(秒)=
}}
5d7c3b30a0616dca98e13befd16331149c311846
警察局
0
129
323
2020-08-03T16:07:14Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=警察局
|等级=7
|金币=50
|人口=30
|经验=60
|现金=1
|占地=1×2
|玻璃=2
|砖块=1
|混凝土路面=1
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=30
|时间(秒)=
}}
20029f66519c9de8ff97763de1a735e66f02ebb9
消防局
0
130
324
2020-08-03T16:07:14Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=消防局
|等级=8
|金币=75
|人口=35
|经验=70
|现金=1
|占地=1×2
|玻璃=2
|砖块=2
|混凝土路面=1
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=1
|时间(分)=
|时间(秒)=
}}
9a87054a5462b752a88dd41ccb31c338d9da4d31
邮局
0
131
325
2020-08-03T16:07:15Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=邮局
|等级=9
|金币=100
|人口=40
|经验=80
|现金=1
|占地=1×2
|玻璃=2
|砖块=1
|混凝土路面=3
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=1
|时间(分)=30
|时间(秒)=
}}
ea38f9a4bda19710dae79b08e3672ced78af9de5
自助洗衣店
0
132
326
2020-08-03T16:07:15Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=自助洗衣店
|等级=10
|金币=125
|人口=45
|经验=90
|现金=1
|占地=1×2
|玻璃=3
|砖块=2
|混凝土路面=2
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=2
|时间(分)=
|时间(秒)=
}}
e830e2cb62df07b50610598cf652f4fbe135d986
电影院
0
133
327
2020-08-03T16:07:16Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=电影院
|等级=11
|金币=150
|人口=50
|经验=100
|现金=1
|占地=1×1
|玻璃=2
|砖块=3
|混凝土路面=3
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=2
|时间(分)=30
|时间(秒)=
}}
fe0de4b11067df67254209631a794baf28e8217b
咖啡厅
0
134
328
2020-08-03T16:07:16Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=咖啡厅
|等级=12
|金币=175
|人口=55
|经验=110
|现金=2
|占地=2×1
|玻璃=2
|砖块=4
|混凝土路面=3
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=3
|时间(分)=
|时间(秒)=
}}
92e22ecd124504f2949b11be91e20a2caebdad0f
美发沙龙
0
135
329
2020-08-03T16:07:16Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=美发沙龙
|等级=13
|金币=200
|人口=60
|经验=120
|现金=2
|占地=2×1
|玻璃=4
|砖块=2
|混凝土路面=4
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=3
|时间(分)=30
|时间(秒)=
}}
9f870c64b48b27f6907b207d9e1dd5d36be3360f
披萨店
0
136
330
2020-08-03T16:07:17Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=披萨店
|等级=14
|金币=250
|人口=65
|经验=130
|现金=2
|占地=1×1
|玻璃=4
|砖块=1
|混凝土路面=6
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=4
|时间(分)=
|时间(秒)=
}}
ca9feac3ddbbe734a6689f7f0f6ed99dbc326686
结婚礼堂
0
137
331
2020-08-03T16:07:17Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=结婚礼堂
|等级=15
|金币=300
|人口=70
|经验=140
|现金=2
|占地=1×2
|玻璃=2
|砖块=5
|混凝土路面=5
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=4
|时间(分)=30
|时间(秒)=
}}
d38f62fd0d70c975826a65915129f82f1f9f7bae
乐器行
0
138
332
2020-08-03T16:07:17Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=乐器行
|等级=16
|金币=350
|人口=75
|经验=150
|现金=2
|占地=1×2
|玻璃=4
|砖块=2
|混凝土路面=7
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=5
|时间(分)=
|时间(秒)=
}}
faa3ff59d18cf991ca732310ea85aa62492b4ef1
保龄球
0
139
333
2020-08-03T16:07:18Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=保龄球
|等级=17
|金币=400
|人口=80
|经验=160
|现金=2
|占地=1×2
|玻璃=5
|砖块=5
|混凝土路面=4
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=5
|时间(分)=30
|时间(秒)=
}}
c1fa53e1fcd7222e36f6c1944b45204e45df0d73
玩具店
0
140
334
2020-08-03T16:07:18Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=玩具店
|等级=18
|金币=450
|人口=85
|经验=170
|现金=2
|占地=2×2
|玻璃=7
|砖块=4
|混凝土路面=4
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=6
|时间(分)=
|时间(秒)=
}}
6a84180bee3fb24f3e33bc0cbcee40dbf26ad306
照相馆
0
141
335
2020-08-03T16:07:19Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=照相馆
|等级=19
|金币=500
|人口=90
|经验=180
|现金=2
|占地=2×2
|玻璃=4
|砖块=5
|混凝土路面=7
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=6
|时间(分)=30
|时间(秒)=
}}
05af85cefd57e1856afc78839ca00d209ef988b6
火箭船
0
142
336
2020-08-03T16:07:19Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=火箭船
|等级=20
|金币=650
|人口=95
|经验=190
|现金=2
|占地=1×2
|玻璃=5
|砖块=6
|混凝土路面=6
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=7
|时间(分)=
|时间(秒)=
}}
9fb41e8e7862c0d348b1374d4a8818c74accebe4
气象台
0
143
337
2020-08-03T16:07:19Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=气象台
|等级=21
|金币=800
|人口=100
|经验=200
|现金=2
|占地=2×2
|玻璃=6
|砖块=5
|混凝土路面=7
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=7
|时间(分)=30
|时间(秒)=
}}
132e106e91ce4f83e2df248e94027effa3b582a2
图书馆
0
144
338
2020-08-03T16:07:20Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=图书馆
|等级=22
|金币=950
|人口=105
|经验=210
|现金=3
|占地=1×1
|玻璃=8
|砖块=5
|混凝土路面=6
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=8
|时间(分)=
|时间(秒)=
}}
2e117a7e2233937d0a38f7c00932671797b55f45
大学
0
145
339
2020-08-03T16:07:20Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=大学
|等级=23
|金币=1100
|人口=110
|经验=220
|现金=3
|占地=1×2
|玻璃=6
|砖块=5
|混凝土路面=10
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=9
|时间(分)=
|时间(秒)=
}}
002bdc81c89b3506bf7e42c25f0a000004b7daca
剧院
0
146
340
2020-08-03T16:07:20Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=剧院
|等级=24
|金币=1350
|人口=115
|经验=230
|现金=3
|占地=1×2
|玻璃=10
|砖块=6
|混凝土路面=7
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=10
|时间(分)=
|时间(秒)=
}}
51098051e3bc9e8d4dfcf75b413738a05ba38b05
美术馆
0
147
341
2020-08-03T16:07:21Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=美术馆
|等级=25
|金币=1600
|人口=120
|经验=240
|现金=3
|占地=2×1
|玻璃=8
|砖块=7
|混凝土路面=10
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=11
|时间(分)=
|时间(秒)=
}}
7cf8ea41cb5daf9d4b6b24e7663bf29945863ce3
马戏团
0
148
342
2020-08-03T16:07:21Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=马戏团
|等级=26
|金币=1900
|人口=125
|经验=250
|现金=3
|占地=1×2
|玻璃=12
|砖块=8
|混凝土路面=7
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=12
|时间(分)=
|时间(秒)=
}}
c4a2f7512a6ad1f20d3a185f0a7755ff22ed4672
停车场
0
149
343
2020-08-03T16:07:21Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=停车场
|等级=27
|金币=2200
|人口=130
|经验=260
|现金=3
|占地=2×2
|玻璃=14
|砖块=6
|混凝土路面=9
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=13
|时间(分)=
|时间(秒)=
}}
4389759bca44930fe4cbeec1aff33f598d51589b
加油站
0
150
344
2020-08-03T16:07:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=加油站
|等级=28
|金币=2500
|人口=135
|经验=270
|现金=3
|占地=1×2
|玻璃=9
|砖块=12
|混凝土路面=10
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=14
|时间(分)=
|时间(秒)=
}}
50966d7bf9ce150e4a8ef68f7b79e94783bd8910
出租车公司
0
151
345
2020-08-03T16:07:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=出租车公司
|等级=29
|金币=2900
|人口=140
|经验=280
|现金=3
|占地=2×2
|玻璃=13
|砖块=11
|混凝土路面=9
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=15
|时间(分)=
|时间(秒)=
}}
f9811e86134f268e36f63e16296abb3bfac070c4
汽车餐厅
0
152
346
2020-08-03T16:07:22Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=汽车餐厅
|等级=30
|金币=3300
|人口=145
|经验=290
|现金=3
|占地=2×2
|玻璃=10
|砖块=16
|混凝土路面=9
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=16
|时间(分)=
|时间(秒)=
}}
2dfefcec126546d7b986fd38bdec70ff87ab0888
写字楼
0
153
347
2020-08-03T16:07:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=写字楼
|等级=31
|金币=3800
|人口=150
|经验=300
|现金=3
|占地=2×2
|玻璃=12
|砖块=12
|混凝土路面=13
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=17
|时间(分)=
|时间(秒)=
}}
8a65b0065b7ac4e5c8d359da6d2521a946afa5da
宾馆
0
154
348
2020-08-03T16:07:23Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=宾馆
|等级=32
|金币=4300
|人口=155
|经验=310
|现金=4
|占地=1×1
|玻璃=11
|砖块=13
|混凝土路面=15
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=18
|时间(分)=
|时间(秒)=
}}
99331ee299cdce015a3ed575a8b1e12a5e0fb91e
电视台
0
155
349
2020-08-03T16:07:24Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=电视台
|等级=33
|金币=4800
|人口=160
|经验=320
|现金=4
|占地=1×2
|玻璃=17
|砖块=10
|混凝土路面=14
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=19
|时间(分)=
|时间(秒)=
}}
568df1a861acddef3e8ade4ec3201c2c274105df
电视塔
0
156
350
2020-08-03T16:07:24Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=电视塔
|等级=34
|金币=5300
|人口=165
|经验=330
|现金=4
|占地=2×2
|玻璃=16
|砖块=13
|混凝土路面=14
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=20
|时间(分)=
|时间(秒)=
}}
1341e415eeab0332f230c1aa4ab43567b5520f43
摩天轮
0
157
351
2020-08-03T16:07:24Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=摩天轮
|等级=35
|金币=5900
|人口=170
|经验=340
|现金=4
|占地=1×1
|玻璃=11
|砖块=18
|混凝土路面=16
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=21
|时间(分)=
|时间(秒)=
}}
5a56d483052063b4d6de62b42a4366d42d2990b9
过山车
0
158
352
2020-08-03T16:07:25Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=过山车
|等级=36
|金币=6500
|人口=175
|经验=350
|现金=4
|占地=2×2
|玻璃=13
|砖块=10
|混凝土路面=24
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=22
|时间(分)=
|时间(秒)=
}}
def0719dc72014ceb01c55848f6347d213e10f37
体育场
0
159
353
2020-08-03T16:07:25Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=体育场
|等级=37
|金币=7200
|人口=180
|经验=360
|现金=4
|占地=2×3
|玻璃=18
|砖块=11
|混凝土路面=20
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=23
|时间(分)=
|时间(秒)=
}}
25ff89fec4596175324049c8c0c86871bd03ed00
宠物店
0
160
354
2020-08-03T16:07:26Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=宠物店
|等级=38
|金币=7900
|人口=185
|经验=370
|现金=4
|占地=3×2
|玻璃=19
|砖块=14
|混凝土路面=18
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=
|时间(分)=
|时间(秒)=
}}
2683a4eb198ae4de027ca9c8216146f9aaa9f56e
气象站
0
161
355
2020-08-03T16:07:26Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=气象站
|等级=39
|金币=8600
|人口=190
|经验=380
|现金=4
|占地=1×2
|玻璃=15
|砖块=16
|混凝土路面=22
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=1
|时间(分)=
|时间(秒)=
}}
88f3c9102c5973233ce80f2eac95c5f400d2559d
高空跳伞学校
0
162
356
2020-08-03T16:07:27Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=高空跳伞学校
|等级=40
|金币=9300
|人口=195
|经验=390
|现金=4
|占地=1×2
|玻璃=18
|砖块=19
|混凝土路面=18
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=2
|时间(分)=
|时间(秒)=
}}
5e421582fc7b7e4460d6c73f67af2ff5b352e2af
漫画书店
0
163
357
2020-08-03T16:07:27Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=漫画书店
|等级=41
|金币=10000
|人口=200
|经验=400
|现金=4
|占地=2×2
|玻璃=22
|砖块=20
|混凝土路面=15
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=3
|时间(分)=
|时间(秒)=
}}
0545eb94322154715c6d9a00fbc84044435b0d8b
海岸巡逻队
0
164
358
2020-08-03T16:07:28Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=海岸巡逻队
|等级=42
|金币=10700
|人口=205
|经验=410
|现金=4
|占地=1×2
|玻璃=22
|砖块=17
|混凝土路面=20
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=4
|时间(分)=
|时间(秒)=
}}
a62d59236c55ae6c65809f2644b0650bcfc41fc0
超市
0
165
359
2020-08-03T16:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=超市
|等级=43
|金币=11500
|人口=210
|经验=420
|现金=4
|占地=2×2
|玻璃=19
|砖块=23
|混凝土路面=19
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=5
|时间(分)=
|时间(秒)=
}}
0d178e85840a1197b81432d31401d09478aa92f1
温室
0
166
360
2020-08-03T16:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=温室
|等级=44
|金币=12500
|人口=215
|经验=430
|现金=4
|占地=2×2
|玻璃=25
|砖块=23
|混凝土路面=15
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=6
|时间(分)=
|时间(秒)=
}}
264a405c5a1cf4f18ecce29dad6738de0171dfa3
水上乐园
0
167
361
2020-08-03T16:07:29Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=水上乐园
|等级=45
|金币=13500
|人口=220
|经验=440
|现金=4
|占地=3×3
|玻璃=23
|砖块=24
|混凝土路面=18
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=7
|时间(分)=
|时间(秒)=
}}
3bf06f3e327d5b9c558794ea59838c89f6598604
汽车展
0
168
362
2020-08-03T16:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=汽车展
|等级=46
|金币=14500
|人口=230
|经验=460
|现金=4
|占地=2×2
|玻璃=22
|砖块=18
|混凝土路面=27
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=8
|时间(分)=
|时间(秒)=
}}
eb5e902edfe6a3e98dd9dfc981e39a69ea2dd340
水力发电站
0
169
363
2020-08-03T16:07:30Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=水力发电站
|等级=47
|金币=15500
|人口=240
|经验=480
|现金=4
|占地=1×2
|玻璃=24
|砖块=21
|混凝土路面=24
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=9
|时间(分)=
|时间(秒)=
}}
2289299e8e1f27ca97cea29819292243d9dc802d
时装小屋
0
170
364
2020-08-03T16:07:31Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=时装小屋
|等级=48
|金币=16500
|人口=250
|经验=500
|现金=4
|占地=3×2
|玻璃=20
|砖块=25
|混凝土路面=26
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=10
|时间(分)=
|时间(秒)=
}}
2206d09736a7e220039ffa0e53371ffdbbfb568b
电影制片厂
0
171
365
2020-08-03T16:07:31Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=电影制片厂
|等级=49
|金币=17500
|人口=260
|经验=520
|现金=4
|占地=2×1
|玻璃=28
|砖块=20
|混凝土路面=25
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=11
|时间(分)=
|时间(秒)=
}}
48c1dd3fa5a4219d0ff9a8e1bf30582fc8c39ce8
市法院
0
172
366
2020-08-03T16:07:32Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=市法院
|等级=50
|金币=18500
|人口=270
|经验=540
|现金=4
|占地=2×2
|玻璃=28
|砖块=29
|混凝土路面=18
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=12
|时间(分)=
|时间(秒)=
}}
20b1e863c5559ccd3f28d69baa49dd8e70484e32
卡丁车比赛
0
173
367
2020-08-03T16:07:32Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=卡丁车比赛
|等级=51
|金币=19500
|人口=290
|经验=580
|现金=5
|占地=2×2
|玻璃=27
|砖块=27
|混凝土路面=23
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=13
|时间(分)=
|时间(秒)=
}}
5c5d97cf4caeb79ff70378d489e628a0c4873061
健身中心
0
174
368
2020-08-03T16:07:32Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=健身中心
|等级=52
|金币=20500
|人口=310
|经验=620
|现金=5
|占地=2×2
|玻璃=38
|砖块=23
|混凝土路面=18
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=14
|时间(分)=
|时间(秒)=
}}
a1c3891911982851cb45a6a96912157e98c0ae2b
温泉疗养中心
0
175
369
2020-08-03T16:07:33Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=温泉疗养中心
|等级=53
|金币=21500
|人口=330
|经验=660
|现金=5
|占地=2×1
|玻璃=23
|砖块=25
|混凝土路面=33
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=15
|时间(分)=
|时间(秒)=
}}
62cb820610c05bce8c409cef96c60887e193cbeb
高尔夫球场
0
176
370
2020-08-03T16:07:33Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=高尔夫球场
|等级=54
|金币=22500
|人口=350
|经验=700
|现金=5
|占地=2×2
|玻璃=24
|砖块=27
|混凝土路面=32
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=16
|时间(分)=
|时间(秒)=
}}
4caea43e4327370ca99e526ef5ad59cbfaaf4538
管风琴厅
0
177
371
2020-08-03T16:07:33Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=管风琴厅
|等级=55
|金币=23500
|人口=370
|经验=740
|现金=5
|占地=2×2
|玻璃=36
|砖块=24
|混凝土路面=25
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=17
|时间(分)=
|时间(秒)=
}}
6738bbc414d26788f59ad7a8bde31f0a392601a3
甜甜圈店
0
178
372
2020-08-03T16:07:34Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=甜甜圈店
|等级=56
|金币=25000
|人口=390
|经验=780
|现金=5
|占地=1×2
|玻璃=34
|砖块=25
|混凝土路面=28
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=18
|时间(分)=
|时间(秒)=
}}
152846d5311eea52ed2eb35a3717c68bc17d108a
赛道
0
179
373
2020-08-03T16:07:34Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=赛道
|等级=57
|金币=26500
|人口=410
|经验=820
|现金=5
|占地=1×2
|玻璃=34
|砖块=24
|混凝土路面=31
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=19
|时间(分)=
|时间(秒)=
}}
e12f424209f5c2d489656edb30f4adc9a155fb50
攀岩墙
0
180
374
2020-08-03T16:07:34Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=攀岩墙
|等级=58
|金币=28000
|人口=430
|经验=860
|现金=5
|占地=3×3
|玻璃=32
|砖块=31
|混凝土路面=28
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=20
|时间(分)=
|时间(秒)=
}}
f42b8dbca6bc0a70ae7d67c61acbd82e2774f21e
汽车维修店
0
181
375
2020-08-03T16:07:35Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=汽车维修店
|等级=59
|金币=29500
|人口=450
|经验=900
|现金=5
|占地=2×1
|玻璃=24
|砖块=34
|混凝土路面=35
|钻头=
|电锯=
|电钻=
|时间(天)=1
|时间(时)=21
|时间(分)=
|时间(秒)=
}}
eb8bb26f3c69b7ee0d91a42d6b51e85ba005358c
天文馆
0
182
376
2020-08-03T16:07:35Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=天文馆
|等级=60
|金币=31000
|人口=470
|经验=940
|现金=5
|占地=1×2
|玻璃=
|砖块=30
|混凝土路面=
|钻头=8
|电锯=5
|电钻=
|时间(天)=1
|时间(时)=22
|时间(分)=
|时间(秒)=
}}
9abdc1a631978237baaa1a4520b056cc8f42afae
花店
0
183
377
2020-08-03T16:07:36Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=花店
|等级=62
|金币=50500
|人口=490
|经验=980
|现金=5
|占地=2×2
|玻璃=35
|砖块=
|混凝土路面=
|钻头=12
|电锯=
|电钻=8
|时间(天)=1
|时间(时)=23
|时间(分)=
|时间(秒)=
}}
351635fd31f9a9f69ab736aaa898c73ac97c44c6
赛马场
0
184
378
2020-08-03T16:07:36Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=赛马场
|等级=64
|金币=63000
|人口=530
|经验=1060
|现金=5
|占地=1×2
|玻璃=
|砖块=41
|混凝土路面=
|钻头=
|电锯=14
|电钻=10
|时间(天)=2
|时间(时)=
|时间(分)=
|时间(秒)=
}}
8a76fce9c2c8b02024eb9686d22431db9b59dbb4
音乐表演场
0
185
379
2020-08-03T16:07:36Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=音乐表演场
|等级=66
|金币=75500
|人口=570
|经验=1140
|现金=5
|占地=2×2
|玻璃=
|砖块=
|混凝土路面=46
|钻头=15
|电锯=
|电钻=13
|时间(天)=2
|时间(时)=1
|时间(分)=
|时间(秒)=
}}
4d4cc76e0389e80e651bb50a2310e9e403f2a5cf
洗车场
0
186
380
2020-08-03T16:07:37Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=洗车场
|等级=68
|金币=87000
|人口=610
|经验=1220
|现金=5
|占地=2×1
|玻璃=
|砖块=51
|混凝土路面=
|钻头=
|电锯=17
|电钻=15
|时间(天)=2
|时间(时)=2
|时间(分)=
|时间(秒)=
}}
1f355dc24151cf2196ef9f6060d45ef14b96fcd6
海豚馆
0
187
381
2020-08-03T16:07:37Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=海豚馆
|等级=70
|金币=99500
|人口=650
|经验=1300
|现金=5
|占地=1×2
|玻璃=57
|砖块=
|混凝土路面=
|钻头=19
|电锯=
|电钻=17
|时间(天)=2
|时间(时)=3
|时间(分)=
|时间(秒)=
}}
cbbe8b0acc143946953435bb251f26c90e804e21
灯塔
0
188
382
2020-08-03T16:07:38Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=灯塔
|等级=72
|金币=111000
|人口=690
|经验=1380
|现金=6
|占地=2×2
|玻璃=
|砖块=
|混凝土路面=67
|钻头=
|电锯=20
|电钻=19
|时间(天)=2
|时间(时)=4
|时间(分)=
|时间(秒)=
}}
52599767137a1779f024ed341ec2f5dc8af2a364
摩天大楼
0
189
383
2020-08-03T16:07:38Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=摩天大楼
|等级=74
|金币=125000
|人口=730
|经验=1460
|现金=6
|占地=1×1
|玻璃=
|砖块=73
|混凝土路面=
|钻头=23
|电锯=
|电钻=21
|时间(天)=2
|时间(时)=5
|时间(分)=
|时间(秒)=
}}
f6da2443dfec72d649f5c1c5937a74f84e6bceca
自行车出租行
0
190
384
2020-08-03T16:07:38Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=自行车出租行
|等级=76
|金币=133000
|人口=790
|经验=1580
|现金=6
|占地=1×1
|玻璃=78
|砖块=
|混凝土路面=
|钻头=25
|电锯=22
|电钻=
|时间(天)=2
|时间(时)=6
|时间(分)=
|时间(秒)=
}}
93ca72b3ad20c55431d06ea6406e56d12b2a28d4
幼儿园
0
191
385
2020-08-03T16:07:39Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=幼儿园
|等级=78
|金币=148000
|人口=850
|经验=1700
|现金=6
|占地=1×2
|玻璃=
|砖块=
|混凝土路面=83
|钻头=
|电锯=24
|电钻=27
|时间(天)=2
|时间(时)=7
|时间(分)=
|时间(秒)=
}}
2ae76376eccbd449f253296d4b74783d81f63c41
犬类中心
0
192
386
2020-08-03T16:07:39Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=犬类中心
|等级=80
|金币=167000
|人口=900
|经验=1800
|现金=6
|占地=2×2
|玻璃=
|砖块=90
|混凝土路面=
|钻头=30
|电锯=
|电钻=25
|时间(天)=2
|时间(时)=8
|时间(分)=
|时间(秒)=
}}
f8dcf845f3fcb7c82130453fa51620c1ae139bff
银行
0
193
387
2020-08-03T16:07:39Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=银行
|等级=82
|金币=180000
|人口=980
|经验=1960
|现金=6
|占地=1×2
|玻璃=95
|砖块=
|混凝土路面=
|钻头=32
|电锯=27
|电钻=
|时间(天)=2
|时间(时)=9
|时间(分)=
|时间(秒)=
}}
1a8c344b2e1e8d16cc9a72440f99a006ec79e741
动物医院
0
194
388
2020-08-03T16:07:40Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{社区建筑
|中文=动物医院
|等级=84
|金币=195000
|人口=
|经验=
|现金=
|占地=2×2
|玻璃=
|砖块=
|混凝土路面=101
|钻头=
|电锯=32
|电钻=31
|时间(天)=
|时间(时)=
|时间(分)=
|时间(秒)=
}}
7662106f7919d3f5f11ef79df6b16d5ec4fecfe7
模板:社区建筑表
10
45
389
144
2020-08-03T16:15:44Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
70ea30829ccf83a434136b7261c2299b0abade8c
390
389
2020-08-03T16:17:42Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>
{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}
{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}
{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}
{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}
{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}
{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
93a57d49d60b1f2a4cfba9f5b753c5ac227b27e5
391
390
2020-08-03T16:18:12Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
12b13af147e2dfa3e7cbc214811958613a2d59d3
395
391
2020-08-06T05:09:42Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|class=img-kk|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
91833d0eb3af06ad011f566863dc26cd832e6e3b
396
395
2020-08-06T05:20:21Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div>
| style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
ad7504c9422a800ee8752c93d64fcc81a4d6ec93
397
396
2020-08-06T05:39:53Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| <div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div>
| class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
d82e662621206198acb9b2f89e6929b527a20e89
398
397
2020-08-06T05:41:39Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
| class="text-nowrap"|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div>
| class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
78ea196ebb70023e7559903f9ce524ffb9148158
399
398
2020-08-06T05:48:59Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
| class="text-nowrap"|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div>
| class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;min-height:60px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;min-height:60px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;min-height:60px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;min-height:60px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;min-height:60px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;min-height:60px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
38ce9d055fea74733351a2483d95d51b79773ae0
400
399
2020-08-06T05:49:43Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
| class="text-nowrap"|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div>
| class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;min-width:60px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;min-width:60px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;min-width:60px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;min-width:60px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
344813a382b8d26a35d8836bad73d9f15d5483fd
401
400
2020-08-06T05:50:13Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
| class="text-nowrap"|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div>
| class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;min-width:60px;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;min-width:60px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;min-width:60px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;min-width:60px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;min-width:60px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
c5833df13e02b5b66dc730c9b02e276622a0cb64
文件:电锯.png
6
195
392
2020-08-03T16:23:12Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:电钻.png
6
196
393
2020-08-03T16:23:12Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:钻头.png
6
197
394
2020-08-03T16:23:13Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
造船厂
0
198
402
2020-08-06T05:56:28Z
13253902
7
创建页面,内容为“{{社区建筑 |中文=造船厂 |等级=86 |金币=212000 |人口= |经验= |现金= |占地= |玻璃= |砖块=107 |混凝土路面= |钻头=33 |电锯= |电钻=34…”
wikitext
text/x-wiki
{{社区建筑
|中文=造船厂
|等级=86
|金币=212000
|人口=
|经验=
|现金=
|占地=
|玻璃=
|砖块=107
|混凝土路面=
|钻头=33
|电锯=
|电钻=34
|时间(天)=
|时间(时)=
|时间(分)=
|时间(秒)=
}}
521f041e067816c05ad450b2dd524a2887c60ec7
403
402
2020-08-06T05:57:13Z
13253902
7
wikitext
text/x-wiki
{{社区建筑
|中文=造船厂
|等级=86
|金币=212000
|人口=
|经验=
|现金=
|占地=
|玻璃=
|砖块=107
|混凝土路面=
|钻头=34
|电锯=
|电钻=33
|时间(天)=
|时间(时)=
|时间(分)=
|时间(秒)=
}}
1f3f7df470566828f8ab2016fc412993ca5ada89
电脑商店
0
199
404
2020-08-06T06:16:30Z
13253902
7
创建页面
wikitext
text/x-wiki
{{社区建筑
|中文=电脑商店
|等级=88
|金币=231000
|人口=
|经验=
|现金=
|占地=
|玻璃=113
|砖块=
|混凝土路面=
|钻头=
|电锯=36
|电钻=34
|时间(天)=
|时间(时)=
|时间(分)=
|时间(秒)=
}}
2b3634a5aed45b7422c0357f3cc8b5939a5411fd
405
404
2020-08-06T06:17:32Z
13253902
7
wikitext
text/x-wiki
{{社区建筑
|中文=电脑商店
|等级=88
|金币=231000
|人口=
|经验=
|现金=
|占地=
|玻璃=113
|砖块=
|混凝土路面=
|钻头=35
|电锯=36
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=
|时间(秒)=
}}
2276704805917851c244cb8d58233954e3c1d5fb
台球厅
0
200
406
2020-08-06T06:18:59Z
13253902
7
创建页面,内容为“{{社区建筑 |中文=台球厅 |等级=90 |金币=252000 |人口= |经验= |现金= |占地= |玻璃= |砖块= |混凝土路面=119 |钻头= |电锯=36 |电钻=39…”
wikitext
text/x-wiki
{{社区建筑
|中文=台球厅
|等级=90
|金币=252000
|人口=
|经验=
|现金=
|占地=
|玻璃=
|砖块=
|混凝土路面=119
|钻头=
|电锯=36
|电钻=39
|时间(天)=
|时间(时)=
|时间(分)=
|时间(秒)=
}}
12eb92604b24cfc0de62a03eafb0fe7aba4ba9e1
电子竞技馆
0
201
407
2020-08-06T06:19:54Z
13253902
7
创建页面,内容为“{{社区建筑 |中文=电子竞技馆 |等级=92 |金币=275000 |人口= |经验= |现金= |占地= |玻璃= |砖块=125 |混凝土路面= |钻头=41 |电锯= |电…”
wikitext
text/x-wiki
{{社区建筑
|中文=电子竞技馆
|等级=92
|金币=275000
|人口=
|经验=
|现金=
|占地=
|玻璃=
|砖块=125
|混凝土路面=
|钻头=41
|电锯=
|电钻=37
|时间(天)=
|时间(时)=
|时间(分)=
|时间(秒)=
}}
0b003fe8ce4bf75fb43ac2d567bd3011072be27c
文件:动物医院.png
6
202
408
2020-08-07T16:45:16Z
13253902
7
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
418
408
2020-08-08T16:22:18Z
13253902
7
13253902上传[[文件:动物医院.png]]的新版本
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
动物医院
0
194
409
388
2020-08-08T05:24:15Z
13253902
7
wikitext
text/x-wiki
{{社区建筑
|中文=动物医院
|等级=84
|金币=195000
|人口=1090
|经验=2180
|现金=6
|占地=2×1
|玻璃=
|砖块=
|混凝土路面=101
|钻头=
|电锯=32
|电钻=31
|时间(天)=2
|时间(时)=10
|时间(分)=
|时间(秒)=
}}
b26735042ec96ba69bd531d2f9d2338722afc3da
银行
0
193
410
387
2020-08-08T05:25:51Z
13253902
7
wikitext
text/x-wiki
{{社区建筑
|中文=银行
|等级=82
|金币=180000
|人口=980
|经验=1960
|现金=6
|占地=2×2
|玻璃=95
|砖块=
|混凝土路面=
|钻头=32
|电锯=27
|电钻=
|时间(天)=2
|时间(时)=9
|时间(分)=
|时间(秒)=
}}
11e61f85804040ce7870b6cfe8fb927709d6cc47
造船厂
0
198
411
403
2020-08-08T05:26:57Z
13253902
7
wikitext
text/x-wiki
{{社区建筑
|中文=造船厂
|等级=86
|金币=212000
|人口=1190
|经验=2320
|现金=6
|占地=2×2
|玻璃=
|砖块=107
|混凝土路面=
|钻头=34
|电锯=
|电钻=33
|时间(天)=2
|时间(时)=11
|时间(分)=
|时间(秒)=
}}
747d0178cb675b921dd6ad6e7624b9cd02a11947
电脑商店
0
199
412
405
2020-08-08T05:28:22Z
13253902
7
wikitext
text/x-wiki
{{社区建筑
|中文=电脑商店
|等级=88
|金币=231000
|人口=1290
|经验=2580
|现金=6
|占地=2×2
|玻璃=113
|砖块=
|混凝土路面=
|钻头=35
|电锯=36
|电钻=
|时间(天)=2
|时间(时)=12
|时间(分)=
|时间(秒)=
}}
798d35b5b143014ef4a7fff4e08abca2c6fbfaa7
台球厅
0
200
413
406
2020-08-08T05:28:55Z
13253902
7
wikitext
text/x-wiki
{{社区建筑
|中文=台球厅
|等级=90
|金币=252000
|人口=1360
|经验=2720
|现金=6
|占地=2×2
|玻璃=
|砖块=
|混凝土路面=119
|钻头=
|电锯=36
|电钻=39
|时间(天)=2
|时间(时)=13
|时间(分)=
|时间(秒)=
}}
b86921a5b1b365c69af28a55091068417e35bceb
电子竞技馆
0
201
414
407
2020-08-08T05:29:24Z
13253902
7
wikitext
text/x-wiki
{{社区建筑
|中文=电子竞技馆
|等级=92
|金币=275000
|人口=1580
|经验=3160
|现金=6
|占地=2×2
|玻璃=
|砖块=125
|混凝土路面=
|钻头=41
|电锯=
|电钻=37
|时间(天)=2
|时间(时)=14
|时间(分)=
|时间(秒)=
}}
c9c88f854aac31e87815922f96b1f4b200c703de
文件:台球厅.png
6
203
415
2020-08-08T15:33:24Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:水上乐园.png
6
204
416
2020-08-08T15:36:37Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:保龄球.png
6
205
417
2020-08-08T16:22:17Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:过山车.png
6
206
419
2020-08-08T16:22:18Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:剧院.png
6
207
420
2020-08-08T16:22:19Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:汽车维修店.png
6
208
421
2020-08-08T16:22:19Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:汽车展.png
6
209
422
2020-08-08T16:22:20Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:天文馆.png
6
210
423
2020-08-08T16:22:21Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:温室.png
6
211
424
2020-08-08T16:22:22Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:幼儿园.png
6
212
425
2020-08-08T16:22:22Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:造船厂.png
6
213
426
2020-08-08T16:22:23Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:电脑商店.png
6
214
427
2020-08-08T16:41:51Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:邮局.png
6
215
428
2020-08-08T16:43:45Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
模板:社区建筑表
10
45
429
401
2020-08-08T16:45:15Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
| class="text-nowrap"|[[文件:{{{2|}}}.png|100px|x100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div>
| class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;min-width:60px;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;min-width:60px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;min-width:60px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;min-width:60px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;min-width:60px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}}
| class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}}
</includeonly>
de2aeaef9c53b5efda5f98a65ef9ea11df4646dc
Widget:BilibiliVideo
274
216
430
2020-08-10T07:21:16Z
13253902
7
创建页面
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
width=width==0?638:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height);
height=height>359?height+135:height;
$(this).width(width);
$(this).height(height);
$(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
d1f01673b6b9ed314627c34eaed188b4eca12cec
模板:B站视频
10
217
431
2020-08-10T07:26:08Z
13253902
7
创建页面,内容为“<includeonly>{{#widget:BilibiliVideo|id={{{1}}}|title={{{3|}}}|page={{{2|1}}}|width={{{4|0}}}|height={{{5|0}}}}}</includeonly> <noinclude> ==使用方法== ====调…”
wikitext
text/x-wiki
<includeonly>{{#widget:BilibiliVideo|id={{{1}}}|title={{{3|}}}|page={{{2|1}}}|width={{{4|0}}}|height={{{5|0}}}}}</includeonly>
<noinclude>
==使用方法==
====调用参数====
<pre>{{B站视频|av号或bv号|分P号|视频名称|宽|高}}</pre>
====必填====
*av号:全数字{{#info:av号或bv号只填一个|info}}
*bv号:英文大小写和数字{{#info:av号或bv号只填一个|info}}
====选填====
*分P号:默认不填即为1
*宽 高:默认不填为638*359
====示例====
你所写的
<pre>{{B站视频|22594153}}
{{B站视频|BV1CW411G7eF}}</pre>
显示内容
{{B站视频|22594153}}
<br>
{{B站视频|BV1CW411G7eF}}
</noinclude>
168a6687170194a43e289ee4b2130d45570704fe
沙盒
0
32
432
153
2020-08-18T04:42:40Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
|名称=测试
6ff28df4911b769705d3df14199b360f81d7567f
433
432
2020-08-18T04:43:19Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
|名称=
19550265cd7588b3299ac541174f5d4986327baf
模块:String
828
218
434
2020-08-19T03:55:45Z
13253902
7
创建页面,内容为“--[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed paramet…”
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} );
local s = new_args['s'] or '';
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } );
local s = new_args['s'] or '';
local i = tonumber( new_args['i'] ) or 1;
local j = tonumber( new_args['j'] ) or -1;
local len = mw.ustring.len( s );
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1;
end
if j < 0 then
j = len + j + 1;
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' );
end
if j < i then
return str._error( 'String subset indices out of order' );
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch}}
OR
{{#invoke:String|pos|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* https://www.lua.org/manual/5.1/manual.html#5.4.1
* https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain, nomatch )
if s == '' then
return str._error( 'Target string is empty' );
end
if pattern == '' then
return str._error( 'Pattern string is empty' );
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' );
end
if match_index == 0 then
return str._error( 'Match index is out of range' );
end
if plain_flag then
pattern = str._escapePattern( pattern );
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start );
end
local iterator = mw.ustring.gmatch(s, pattern);
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1;
if match_index == 0 then
result = w;
break;
end
end
else
-- Reverse search
local result_table = {};
local count = 1;
for w in iterator do
result_table[count] = w;
count = count + 1;
end
result = result_table[ count + match_index ];
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' );
else
return nomatch;
end
else
return result;
end
end
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} );
local s = new_args['s'] or '';
local start = tonumber( new_args['start'] ) or 1;
local plain_flag = str._getBoolean( new_args['plain'] or false );
local pattern = new_args['pattern'] or '';
local match_index = math.floor( tonumber(new_args['match']) or 1 );
local nomatch = new_args['nomatch'];
return str._match( s, pattern, start, match_index, plain, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} );
local target_str = new_args['target'] or '';
local pos = tonumber( new_args['pos'] ) or 0;
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' );
end
return mw.ustring.sub( target_str, pos, pos );
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} );
local source_str = new_args['source'] or '';
local target_str = new_args['target'] or '';
if target_str == '' then
return 1;
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } );
local source_str = new_args['source'] or '';
local pattern = new_args['target'] or '';
local start_pos = tonumber(new_args['start']) or 1;
local plain = new_args['plain'] or true;
if source_str == '' or pattern == '' then
return 0;
end
plain = str._getBoolean( plain );
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } );
local source_str = new_args['source'] or '';
local pattern = new_args['pattern'] or '';
local replace = new_args['replace'] or '';
local count = tonumber( new_args['count'] );
local plain = new_args['plain'] or true;
if source_str == '' or pattern == '' then
return source_str;
end
plain = str._getBoolean( plain );
if plain then
pattern = str._escapePattern( pattern );
replace = mw.ustring.gsub( replace, "%%", "%%%%" ); --Only need to escape replacement sequences.
end
local result;
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count );
else
result = mw.ustring.gsub( source_str, pattern, replace );
end
return result;
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' );
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {};
local index = 1;
local value;
for i,arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index];
index = index + 1;
end
new_args[arg] = value;
end
return new_args;
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame();
local error_category = frame.args.error_category or 'Errors reported by Module String';
local ignore_errors = frame.args.ignore_errors or false;
local no_category = frame.args.no_category or false;
if str._getBoolean(ignore_errors) then
return '';
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>';
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str;
end
return error_str;
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value;
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower();
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false;
else
boolean_value = true;
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str;
else
error( 'No boolean value found' );
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
end
return str
32c2c0696ac2e148d7e7390f3cd788a6f8e48361
437
434
2020-08-19T04:02:46Z
13253902
7
Scribunto
text/plain
--[[
转载自:https://m.mediawiki.org/wiki/Module:String
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} );
local s = new_args['s'] or '';
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } );
local s = new_args['s'] or '';
local i = tonumber( new_args['i'] ) or 1;
local j = tonumber( new_args['j'] ) or -1;
local len = mw.ustring.len( s );
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1;
end
if j < 0 then
j = len + j + 1;
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' );
end
if j < i then
return str._error( 'String subset indices out of order' );
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch}}
OR
{{#invoke:String|pos|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* https://www.lua.org/manual/5.1/manual.html#5.4.1
* https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain, nomatch )
if s == '' then
return str._error( 'Target string is empty' );
end
if pattern == '' then
return str._error( 'Pattern string is empty' );
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' );
end
if match_index == 0 then
return str._error( 'Match index is out of range' );
end
if plain_flag then
pattern = str._escapePattern( pattern );
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start );
end
local iterator = mw.ustring.gmatch(s, pattern);
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1;
if match_index == 0 then
result = w;
break;
end
end
else
-- Reverse search
local result_table = {};
local count = 1;
for w in iterator do
result_table[count] = w;
count = count + 1;
end
result = result_table[ count + match_index ];
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' );
else
return nomatch;
end
else
return result;
end
end
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} );
local s = new_args['s'] or '';
local start = tonumber( new_args['start'] ) or 1;
local plain_flag = str._getBoolean( new_args['plain'] or false );
local pattern = new_args['pattern'] or '';
local match_index = math.floor( tonumber(new_args['match']) or 1 );
local nomatch = new_args['nomatch'];
return str._match( s, pattern, start, match_index, plain, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} );
local target_str = new_args['target'] or '';
local pos = tonumber( new_args['pos'] ) or 0;
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' );
end
return mw.ustring.sub( target_str, pos, pos );
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} );
local source_str = new_args['source'] or '';
local target_str = new_args['target'] or '';
if target_str == '' then
return 1;
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } );
local source_str = new_args['source'] or '';
local pattern = new_args['target'] or '';
local start_pos = tonumber(new_args['start']) or 1;
local plain = new_args['plain'] or true;
if source_str == '' or pattern == '' then
return 0;
end
plain = str._getBoolean( plain );
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } );
local source_str = new_args['source'] or '';
local pattern = new_args['pattern'] or '';
local replace = new_args['replace'] or '';
local count = tonumber( new_args['count'] );
local plain = new_args['plain'] or true;
if source_str == '' or pattern == '' then
return source_str;
end
plain = str._getBoolean( plain );
if plain then
pattern = str._escapePattern( pattern );
replace = mw.ustring.gsub( replace, "%%", "%%%%" ); --Only need to escape replacement sequences.
end
local result;
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count );
else
result = mw.ustring.gsub( source_str, pattern, replace );
end
return result;
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' );
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {};
local index = 1;
local value;
for i,arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index];
index = index + 1;
end
new_args[arg] = value;
end
return new_args;
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame();
local error_category = frame.args.error_category or 'Errors reported by Module String';
local ignore_errors = frame.args.ignore_errors or false;
local no_category = frame.args.no_category or false;
if str._getBoolean(ignore_errors) then
return '';
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>';
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str;
end
return error_str;
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value;
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower();
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false;
else
boolean_value = true;
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str;
else
error( 'No boolean value found' );
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
end
return str
1e2281946ed88fdb4745289251ce31bebfaaf702
模板:循环
10
219
435
2020-08-19T03:58:16Z
13253902
7
创建页面,内容为“{{<includeonly>safesubst:</includeonly>#invoke:String|rep|1={{{2|}}}|2={{{1|<noinclude>1</noinclude>}}}}}<noinclude> {{documentation}} <!-- Categories go on the /doc…”
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:String|rep|1={{{2|}}}|2={{{1|<noinclude>1</noinclude>}}}}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go in Wikidata -->
</noinclude>
bbbcfd80f9d6f4a62d5861134ad1d6f2d34ff82c
436
435
2020-08-19T04:01:41Z
13253902
7
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:String|rep|1={{{2|}}}|2={{{1|<noinclude>1</noinclude>}}}}}<noinclude>
转载自:https://m.mediawiki.org/wiki/Template:Loop
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go in Wikidata -->
</noinclude>
b3793296484d4b758a543ef5abe3551317ee2b56
文件:自助洗衣店.png
6
220
438
2020-09-07T14:23:58Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:宠物店.png
6
221
439
2020-09-07T14:23:59Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:大学.png
6
222
440
2020-09-07T14:23:59Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:灯塔.png
6
223
441
2020-09-07T14:24:00Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:电影院.png
6
224
442
2020-09-07T14:24:00Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:花店.png
6
225
443
2020-09-07T14:24:01Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:警察局.png
6
226
444
2020-09-07T14:24:01Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:咖啡厅.png
6
227
445
2020-09-07T14:24:02Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:乐器行.png
6
228
446
2020-09-07T14:24:02Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:美发沙龙.png
6
229
447
2020-09-07T14:24:03Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:披萨店.png
6
230
448
2020-09-07T14:24:03Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:气象台.png
6
231
449
2020-09-07T14:24:04Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:气象站.png
6
232
450
2020-09-07T14:24:04Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:犬类中心.png
6
233
451
2020-09-07T14:24:05Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:甜甜圈店.png
6
234
452
2020-09-07T14:24:05Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:停车场.png
6
235
453
2020-09-07T14:24:06Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:图书馆.png
6
236
454
2020-09-07T14:24:06Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:玩具店.png
6
237
455
2020-09-07T14:24:07Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:消防局.png
6
238
456
2020-09-07T14:24:07Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:写字楼.png
6
239
457
2020-09-07T14:24:07Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:银行.png
6
240
458
2020-09-07T14:24:08Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
470
458
2020-09-07T16:02:41Z
13253902
7
13253902上传[[文件:银行.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:邮局.png
6
215
459
428
2020-09-07T14:24:08Z
13253902
7
13253902上传[[文件:邮局.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:自行车出租行.png
6
241
460
2020-09-07T14:24:09Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:咖啡厅.png
6
227
461
445
2020-09-07T14:25:13Z
13253902
7
13253902移动页面[[文件:咖啡店.png]]至[[文件:咖啡厅.png]],不留重定向
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:音乐表演场.png
6
242
462
2020-09-07T15:04:45Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:超市.png
6
243
463
2020-09-07T15:04:45Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:电视台.png
6
244
464
2020-09-07T15:04:46Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:火箭船.png
6
245
465
2020-09-07T15:04:46Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:漫画书店.png
6
246
466
2020-09-07T15:04:47Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:美术馆.png
6
247
467
2020-09-07T15:04:47Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:市法院.png
6
248
468
2020-09-07T15:04:48Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:水力发电站.png
6
249
469
2020-09-07T15:04:48Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
483
469
2020-09-07T16:28:13Z
13253902
7
13253902移动页面[[文件:水电站.png]]至[[文件:水力发电站.png]],不留重定向
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:宾馆.png
6
250
471
2020-09-07T16:02:41Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:出租车公司.png
6
251
472
2020-09-07T16:02:42Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:电视塔.png
6
252
473
2020-09-07T16:02:42Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:管风琴厅.png
6
253
474
2020-09-07T16:02:43Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:海豚馆.png
6
254
475
2020-09-07T16:02:43Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:加油站.png
6
255
476
2020-09-07T16:02:44Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:结婚礼堂.png
6
256
477
2020-09-07T16:02:44Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:摩天大楼.png
6
257
478
2020-09-07T16:02:45Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:汽车餐厅.png
6
258
479
2020-09-07T16:02:45Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:体育场.png
6
259
480
2020-09-07T16:02:46Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:温泉疗养中心.png
6
260
481
2020-09-07T16:02:46Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:洗车场.png
6
261
482
2020-09-07T16:02:47Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:电影制片厂.png
6
262
484
2020-09-07T16:51:11Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:高尔夫球场.png
6
263
485
2020-09-07T16:51:12Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:高空跳伞学校.png
6
264
486
2020-09-07T16:51:12Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:海岸巡逻队.png
6
265
487
2020-09-07T16:51:13Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:健身中心.png
6
266
488
2020-09-07T16:51:13Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:卡丁车比赛.png
6
267
489
2020-09-07T16:51:13Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:攀岩墙.png
6
268
490
2020-09-07T16:51:14Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:赛道.png
6
269
491
2020-09-07T16:51:14Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:赛马场.png
6
270
492
2020-09-07T16:51:15Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:时装小屋.png
6
271
493
2020-09-07T16:51:15Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:电子竞技馆.png
6
272
494
2020-09-07T17:16:39Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
497
494
2020-09-07T17:18:38Z
13253902
7
13253902上传[[文件:电子竞技馆.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:摩天轮.png
6
273
495
2020-09-07T17:16:40Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
499
495
2020-09-07T17:18:39Z
13253902
7
13253902上传[[文件:摩天轮.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:马戏团.png
6
274
496
2020-09-07T17:16:40Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
498
496
2020-09-07T17:18:38Z
13253902
7
13253902上传[[文件:马戏团.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:照相馆.png
6
275
500
2020-09-07T17:29:13Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
MediaWiki:Gadget-section-User
8
276
501
2020-09-15T07:13:29Z
13253902
7
创建页面,内容为“用户工具”
wikitext
text/x-wiki
用户工具
95eab0d93a6b00f98e67ef65935ad85b488375b9
MediaWiki:Gadgets-definition
8
56
502
147
2020-09-15T07:14:12Z
13253902
7
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
9d4075c866dfa53f9cd565242caf30eda026507f
MediaWiki:Gadget-BilibiliUser
8
277
503
2020-09-15T07:14:33Z
13253902
7
创建页面,内容为“'''BWIKI用户标签扩展工具''':自动展示用户信息。”
wikitext
text/x-wiki
'''BWIKI用户标签扩展工具''':自动展示用户信息。
c52f2ec61f809a98b21c723ff3536423b82caa06
MediaWiki:Gadget-BilibiliUser.js
8
278
504
2020-09-15T07:15:31Z
13253902
7
创建页面,内容为“mw.loader.load("/factorio/load.php?modules=ext.gadget.BilibiliUser&only=scripts");”
javascript
text/javascript
mw.loader.load("/factorio/load.php?modules=ext.gadget.BilibiliUser&only=scripts");
45df009710a916edd18e661ca934e2edfd3a2def
Widget:BilibiliVideo
274
216
505
430
2020-09-21T06:54:37Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
width=width==0?638:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height);
height=height>359?height+135:height;
$(this).width(width);
$(this).height(height);
$(this).attr("src",`//player.bilibili.com//blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
ccc673b2b12e0504c644a5cf789f8de66cbc3c6d
506
505
2020-09-21T07:24:47Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com//blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" width:<!--{$width}-->; height:<!--{$height}-->;max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
16d41d812a87abed1cc4856137a98e0c541a0443
507
506
2020-09-21T07:26:13Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com//blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;width:<!--{$width}-->; height:<!--{$height}-->;max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
a86cbaf599827b04449ee0f9e458c9c0adbb3fc4
Widget:BilibiliVideo
274
216
508
507
2020-09-21T07:27:25Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com//blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;width:<!--{$width}-->; height:<!--{$height}-->;max-width:100%;min-height: 200px;" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
9527cc500535ee162ee6ab764cf0d8d8d7eef270
509
508
2020-09-21T07:32:10Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
6660962dd3e0a5c0117eda0ae58ddd09f60af6f6
510
509
2020-09-21T07:34:01Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;width:<!--{$width}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
d21123b2fdf7833cf4c2eb4f7b6032517cc674cc
511
510
2020-09-21T07:38:44Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
af69e98e5fcc8f11effea90302c997f5101203dc
512
511
2020-09-21T07:39:45Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"> class="video-player" <iframe style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
3030b685a4bd923e86f3926dd11e123985a333b1
513
512
2020-09-21T07:40:05Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->" class="video-player"><iframe style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
8cd9b758ec8d8264f2fcef41f403b0f3d06f149a
514
513
2020-09-21T07:40:55Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
0e5f0d1e6dcf0e1789108feb73499b660e291949
515
514
2020-09-21T07:41:55Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
635c1b327565a2b44f1822a6c93f52ddae1bdb09
516
515
2020-09-21T07:42:52Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
98c491d001031f5e44fd2e42093e6a9d4f08be85
517
516
2020-09-21T07:43:29Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
fdd8ed1487f9d48b832102202f502b408f664ca0
518
517
2020-09-21T07:44:58Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;width:<!--{$width}-->" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
0a053a105cc687f662cb4e698a4c8a85486151cb
520
518
2020-09-21T15:00:27Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;width:<!--{$width}-->;height=<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
35f9f7188998a87671ec5f1254cd15ce2b491143
521
520
2020-09-21T15:01:41Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
ec3066bfccd6eafa562a9a633b9db93ec1fe487c
522
521
2020-09-21T15:02:23Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;height:<!--{$height}-->;"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
345dfd98db205ff0929026cbdc5b6d5ed5b97255
523
522
2020-09-21T15:08:57Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;height:<!--{$height}-->;"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
512278ff53019b2a99284f79ee2cbe1143a1b446
524
523
2020-09-21T15:14:41Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
0fa01611e48b016f3d414fbdbede008cedcc7771
525
524
2020-09-21T15:21:26Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->" width="<!--{$width}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
cb8a3e1869cb61f5319a34432e0642c3d9dd8822
526
525
2020-09-21T15:26:27Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->" width="<!--{$width}-->"><iframe class="video-player" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
5a9272bc2ae78901f3e14201332e97c7109f7841
527
526
2020-09-21T15:29:45Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;"><iframe class="video-player" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
3d17ee1dfadf974870221a647028a40fc92fc44f
528
527
2020-09-21T15:32:32Z
13253902
7
wikitext
text/x-wiki
/*
** BilibiliVideo
** Author:马小萌
** Bilibili:https://space.bilibili.com/123855714
**/
"use strict";
$(function() {
$(".bvideo").each(function(i){
$(this).delay(500*i).queue(function() {
let id = `${$(this).data("id")}`.replace(/^av(\d+)$/i,"$1");
let page = $(this).data("page");
let title = $(this).data("title");
let width = $(this).data("width");
let height = $(this).data("height");
let idname = isNaN(id)?"bvid":"aid";
width=width==0?638:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == "") title = result.data.title;
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
height=height==0?v.dimension.width==0?(width*9/16):width*v.dimension.height/v.dimension.width:height;
height=height>359?height+135:height;
$("<iframe>").css({
"width":width,
"height":height,
"margin":"0 20px;"
}).attr({
"max-width":"100%",
"scrolling":"no",
"border":"0",
"frameborder":"no",
"framespacing":"0",
"allowfullscreen":"true",
"src":`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`
}).appendTo($(`[data-id$=${id}][data-page=${page}]`));
$(`<ul>
<li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li>
<li><a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a></li>
</ul>`).appendTo($(`[data-id$=${id}][data-page=${page}]`));
});
});
});
});
8393cf60bfa678c303848da5453fee64333bb80f
529
528
2020-09-21T15:36:38Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
/*
** BilibiliVideo
** Author:马小萌
** Bilibili:https://space.bilibili.com/123855714
**/
"use strict";
$(function() {
$(".bvideo").each(function(i){
$(this).delay(500*i).queue(function() {
let id = `${$(this).data("id")}`.replace(/^av(\d+)$/i,"$1");
let page = $(this).data("page");
let title = $(this).data("title");
let width = $(this).data("width");
let height = $(this).data("height");
let idname = isNaN(id)?"bvid":"aid";
width=width==0?638:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == "") title = result.data.title;
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
height=height==0?v.dimension.width==0?(width*9/16):width*v.dimension.height/v.dimension.width:height;
height=height>359?height+135:height;
$("<iframe>").css({
"width":width,
"height":height,
"margin":"0 20px;"
}).attr({
"max-width":"100%",
"scrolling":"no",
"border":"0",
"frameborder":"no",
"framespacing":"0",
"allowfullscreen":"true",
"src":`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`
}).appendTo($(`[data-id$=${id}][data-page=${page}]`));
$(`<ul>
<li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li>
<li><a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a></li>
</ul>`).appendTo($(`[data-id$=${id}][data-page=${page}]`));
});
});
});
});</includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
56c19f4e03a6c286b2993de90eaa585fa3879f1e
530
529
2020-09-21T15:37:17Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(function() {
$(".bvideo").each(function(i){
$(this).delay(500*i).queue(function() {
let id = `${$(this).data("id")}`.replace(/^av(\d+)$/i,"$1");
let page = $(this).data("page");
let title = $(this).data("title");
let width = $(this).data("width");
let height = $(this).data("height");
let idname = isNaN(id)?"bvid":"aid";
width=width==0?638:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == "") title = result.data.title;
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
height=height==0?v.dimension.width==0?(width*9/16):width*v.dimension.height/v.dimension.width:height;
height=height>359?height+135:height;
$("<iframe>").css({
"width":width,
"height":height,
"margin":"0 20px;"
}).attr({
"max-width":"100%",
"scrolling":"no",
"border":"0",
"frameborder":"no",
"framespacing":"0",
"allowfullscreen":"true",
"src":`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`
}).appendTo($(`[data-id$=${id}][data-page=${page}]`));
$(`<ul>
<li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li>
<li><a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a></li>
</ul>`).appendTo($(`[data-id$=${id}][data-page=${page}]`));
});
});
});
});</includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
91cbe2bac32c6603f9526a0ff607cc1752dbb5b9
531
530
2020-09-21T15:39:12Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
width=width==0?638:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height);
height=height>359?height+135:height;
$(this).width(width);
$(this).height(height);
$(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
6511551701447e25ed03bcb1382e962ac39313f5
532
531
2020-09-21T15:39:54Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
width=width==0?638:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height);
height=height>359?height+135:height;
$(this).width(width);
$(this).height(height);
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
4380cc6f16cbe7938bbb40a76d693c4645b2addb
533
532
2020-09-21T15:44:11Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
width=width==0?638:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height);
height=height>359?height+135:height;
$(this).width(width);
$(this).height(height);
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
4ac69f76ef9f425628b74870aa0ae0ad3f4eeb26
534
533
2020-09-21T15:46:53Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
width=width==0?100%:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height);
height=height>359?height+135:height;
$(this).width(width);
$(this).height(height);
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
43c9cd3edc5f55a4b25d19972febd2d60b8db29c
535
534
2020-09-21T16:04:53Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
width=width==0?638:width;
width=Math.min(width,$(this).parents()[2].clientWidth-40);
height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height);
height=height>359?height+135:height;
$(this).width(width);
$(this).height(height);
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
5e3573b20dfa7a34a06bf9208ce8fe7c0d6e6930
536
535
2020-09-21T17:25:53Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = <!--{$width}-->;
let height = <!--{$height}-->;
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;height:<!--{$height}-->;"><iframe style="width:100%;height:<!--{$height}-->;min-height: 200px;" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
7cb4b32c7618be63fafe54da850f4243387ad2cd
537
536
2020-09-21T17:33:46Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
$(document).ready(function() {
let id = "<!--{$id}-->";
let aid = "";
let page = <!--{$page}-->;
let title = "<!--{$title}-->";
let width = "<!--{$width}-->";
let height = "<!--{$height}-->";
let idname = isNaN(id)?"bvid":"aid";
$.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) {
if(title == ""){
title = result.data.title;
}
let v;
result.data.pages.forEach(function(item) {
if(item.page == page){
v = item;
return;
}
});
$(`#${id}-${page} iframe`).each(function(){
$(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`);
$(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`);
});
await(sleep(1000));
});
});
</script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;height:<!--{$height}-->;"><iframe style="width:100%;height:<!--{$height}-->;min-height: 200px;" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]
*代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude>
aee6d039eea3cac6e451d75e357fe533c47a3e17
模板:B站视频
10
217
519
431
2020-09-21T07:48:51Z
13253902
7
wikitext
text/x-wiki
<includeonly>{{#widget:BilibiliVideo|id={{{1}}}|title={{{3|}}}|page={{{2|1}}}|width={{{4|600}}}|height={{{5|0}}}}}</includeonly>
<noinclude>
==使用方法==
====调用参数====
<pre>{{B站视频|av号或bv号|分P号|视频名称|宽|高}}</pre>
====必填====
*av号:全数字{{#info:av号或bv号只填一个|info}}
*bv号:英文大小写和数字{{#info:av号或bv号只填一个|info}}
====选填====
*分P号:默认不填即为1
*宽 高:默认不填为638*359
====示例====
你所写的
<pre>{{B站视频|22594153}}
{{B站视频|BV1CW411G7eF}}</pre>
显示内容
{{B站视频|22594153}}
<br>
{{B站视频|BV1CW411G7eF}}
</noinclude>
{{#css:
.video-player{
width:100%;
height: 35vw;
min-height: 200px;
}
}}
d558c1195ae49b1ac09588d5f52e0362973809a4
538
519
2020-09-21T17:47:58Z
13253902
7
wikitext
text/x-wiki
<includeonly>{{#widget:BilibiliVideo|id={{{1}}}|title={{{4|}}}|page={{{2|1}}}|width={{#if:{{{3|}}}|{{{3|}}}px|100%}}|height={{#if:{{{3|}}}|calc({{{3|}}}px*9/16)|35vw}}}}</includeonly>
<noinclude>
==使用方法==
====调用参数====
<pre>{{B站视频|av号或bv号|分P号|视频名称|宽|高}}</pre>
====必填====
*av号:全数字{{#info:av号或bv号只填一个|info}}
*bv号:英文大小写和数字{{#info:av号或bv号只填一个|info}}
====选填====
*分P号:默认不填即为1
*宽 高:默认不填为638*359
====示例====
你所写的
<pre>{{B站视频|22594153}}
{{B站视频|BV1CW411G7eF}}</pre>
显示内容
{{B站视频|22594153}}
<br>
{{B站视频|BV1CW411G7eF|1|800|梦想小镇}}
</noinclude>
0f74af0c2360a55485600b2dba4f1f8460905e59
模板:房屋表
10
24
539
124
2020-11-16T03:43:30Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| style="font-size:xx-large;"| {{{3|}}}
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{5|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}}
</includeonly>
ae1f1dd7c7c746ea0cada4226349006813a88d80
540
539
2020-11-16T03:51:52Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| style="font-size:2em;"| {{{3|}}}
| style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}
| style="font-size:2vw;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{5|}}}
| style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}}
</includeonly>
0480421ab8aa4af27c59ea362fa64b2f65180867
房屋
0
23
541
281
2020-11-16T03:53:24Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;"
! 房屋
! 最大数量
! 所需金币
! 获得人口
! 建造时间
{{#ask:[[分类:房屋]]
|?中文
|?最大数量
|?金币
|?人口
|?经验
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|?占地
|link=none
|sort=金币
|order=asc
|headers=hide
|template=房屋表
|format=template
|limit=1000
}}
|}
fb5b4a99cc0b829435cd0e6758a5620609acd4d8
房屋/公寓综合楼
0
279
542
2020-11-20T07:38:46Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=公寓综合楼
|等级=86、90<!-- 用顿号隔开 -->
|金币=46400
|人口=580
|经验=580
|时间(天)=1
|时间(时)=18
|时间(分)=
|时间(秒)=
|占地=1×2
}}
b87b1408870fff6bad1d0f2339ee842f2208ae47
房屋/带阳台的房子
0
280
543
2020-11-20T07:38:47Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带阳台的房子
|等级=88<!-- 用顿号隔开 -->
|金币=51200
|人口=640
|经验=640
|时间(天)=1
|时间(时)=18
|时间(分)=
|时间(秒)=
|占地=1×2
}}
5c01d245b2fb4536f6ef7654fbe67c2078b4cead
房屋/共管公寓
0
75
544
264
2020-11-20T07:38:47Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=90<!-- 用顿号隔开 -->
|金币=56000
|人口=700
|经验=700
|时间(天)=1
|时间(时)=20
|时间(分)=
|时间(秒)=
|占地=1×2
}}
76803c9b048c304cbdedad67cad7b052a2a8df0d
547
544
2020-11-20T07:41:27Z
13253902
7
撤销[[Special:Contributions/13253902|13253902]]([[User talk:13253902|讨论]])的版本544
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=32、33、36、38、40、42<!-- 用顿号隔开 -->
|金币=1700
|人口=85
|经验=85
|时间(天)=
|时间(时)=18
|时间(分)=
|时间(秒)=
|占地=1×2
}}
d1bb5855503fb8d8199fa5a7afeb37ffc534aace
房屋/高层建筑
0
281
545
2020-11-20T07:38:47Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=高层建筑
|等级=92<!-- 用顿号隔开 -->
|金币=61000
|人口=760
|经验=760
|时间(天)=1
|时间(时)=20
|时间(分)=
|时间(秒)=
|占地=1×2
}}
c4b50bda3ed316c9bedb04345f7fff298135f287
房屋/带泳池的高层
0
282
546
2020-11-20T07:38:48Z
13253902
7
批量编辑 by BwikiBatchEditor
wikitext
text/x-wiki
{{房屋
|中文=带泳池的高层
|等级=92<!-- 用顿号隔开 -->
|金币=66000
|人口=820
|经验=820
|时间(天)=1
|时间(时)=22
|时间(分)=
|时间(秒)=
|占地=1×2
}}
4ba40e9dd15d9386b78c90600532e9ab151084bc
房屋/共管公寓(90)
0
283
548
2020-11-20T07:42:28Z
13253902
7
创建页面,内容为“{{房屋 |中文=共管公寓 |等级=90<!-- 用顿号隔开 --> |金币=56000 |人口=700 |经验=700 |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= |…”
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=90<!-- 用顿号隔开 -->
|金币=56000
|人口=700
|经验=700
|时间(天)=1
|时间(时)=20
|时间(分)=
|时间(秒)=
|占地=1×2
}}
76803c9b048c304cbdedad67cad7b052a2a8df0d
549
548
2020-11-20T07:43:59Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=共管公寓(90)
|等级=90<!-- 用顿号隔开 -->
|金币=56000
|人口=700
|经验=700
|时间(天)=1
|时间(时)=20
|时间(分)=
|时间(秒)=
|占地=1×2
}}
39bb5bd41f980d9e85bbf9b367ef97b6b1f706dc
MediaWiki:Gadgets-definition
8
56
550
502
2021-01-08T02:35:19Z
13253902
7
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
9b57a82bee4e6eedbd3d50b89c097c7aaeda26e8
MediaWiki:Gadget-BilibiliUser.js
8
278
551
504
2021-01-08T02:37:41Z
13253902
7
javascript
text/javascript
mw.loader.load("https://wiki.biligame.com/factorio/User:123855714/BilibiliUser.js?action=raw&ctype=text/javascript", "text/javascript");
8a7a78bfb1f1a346059d25c0ce0b301b407b8b52
552
551
2021-01-08T02:38:54Z
13253902
7
javascript
text/javascript
mw.loader.load("/factorio/load.php?modules=ext.gadget.BilibiliUser&only=scripts");
45df009710a916edd18e661ca934e2edfd3a2def
553
552
2021-01-08T02:40:05Z
13253902
7
javascript
text/javascript
mw.loader.load("https://wiki.biligame.com/factorio/User:123855714/BilibiliUser.js?action=raw&ctype=text/javascript", "text/javascript");
8a7a78bfb1f1a346059d25c0ce0b301b407b8b52
MediaWiki:Common.js
8
33
554
120
2021-01-11T05:16:29Z
13253902
7
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
a6e7e60baab2fbe76e2fb13f30136471bf62939c
Dqw
0
284
555
2021-01-18T09:40:43Z
509732352
106
创建页面,内容为“<!--<tabber> 序章={{封装11}} |-| 第一章={{封装22}} |-| 第二章={{封装22}} </tabber>--> {{#tag:tabber| 序章={{封装11}} {{!}}-{{!}} 1={{封装22}} }}…”
wikitext
text/x-wiki
<!--<tabber>
序章={{封装11}}
|-|
第一章={{封装22}}
|-|
第二章={{封装22}}
</tabber>-->
{{#tag:tabber|
序章={{封装11}}
{{!}}-{{!}}
1={{封装22}}
}}
{{#Widget:测试}}
这里是一段文字中的#号
{{#cscore:9388102|pages}}
[[封面::Tlgd icon.png]]
[[初始耐久::1000]]__NOTOC__
==DD==
<ul class="nav nav-tabs">
<li class="active"><a href="#">Home</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Menu 1
<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Submenu 1-1</a></li>
<li><a href="#">Submenu 1-2</a></li>
<li><a href="#">Submenu 1-3</a></li>
</ul>
</li>
<li><a href="#">Menu 2</a></li>
<li><a href="#">Menu 3</a></li>
</ul>
==list==
<ul class="list-group">
<li class="list-group-item">New <span class="badge">2020/12/9</span></li>
<li class="list-group-item">Deleted <span class="badge">2020/12/9</span></li>
<li class="list-group-item">Warnings <span class="badge">2020/12/9</span></li>
</ul>
==图片==
[[文件:C++.png|class=img-thumbnail|link=]]
==巨幕==
<div class="jumbotron">
<h1>Hello, world!</h1>
<p>...</p>
<p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
</div>
==页头==
<div class="page-header">
<h1>Example page header <small>Subtext for header</small></h1>
</div>
==111==
<div class="row">
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
[[文件:C++.png|link=]]
<div class="caption">
<h3>Thumbnail label</h3>
<p>...</p>
<p><a href="#" class="btn btn-primary" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p>
</div>
</div>
</div>
</div>
==面包屑==
<ol class="breadcrumb">
<li><a href="#">Home</a></li>
<li><a href="#">Library</a></li>
<li class="active">Data</li>
</ol>
==标题和文字高度相等的等高卡片布局==
<div class="row">
<div class="col-md-4 col-sm-6">
<div class="card-001" style="">
<div class="card-001-img" style="">[[文件:C++.png|link=]]</div>
<div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div>
<div class="card-001-p" style="">
<p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p>
</div >
[[首页|<span class="btn btn-primary" style="width:100%">按go按go按go按go</span>]]
</div>
</div>
<div class="col-md-4 col-sm-6">
<div class="card-001" style="">
<div class="card-001-img" style="">[[文件:C++.png|link=]]</div>
<div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div>
<div class="card-001-p" style="">
<p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p>
</div >
[[首页|<span class="btn btn-primary">按go按go按go按go</span>]]
</div>
</div>
<div class="col-md-4 col-sm-6">
<div class="card-001" style="">
<div class="card-001-img" style="">[[文件:C++.png|link=]]</div>
<div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div>
<div class="card-001-p" style="">
<p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p>
</div >
[[首页|<span class="btn btn-primary">按go按go按go按go</span>]]
</div>
</div>
</div>
==页面代码==
<SyntaxHighlight lang=html>
<div class="row">
<div class="col-md-4 col-sm-6">
<div class="card-001" style="">
<div class="card-001-img" style="">[[文件:C++.png|link=]]</div>
<div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div>
<div class="card-001-p" style="">
<p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p>
</div >
[[首页|<span class="btn btn-primary">按go按go按go按go</span>]]
</div>
</div>
<div class="col-md-4 col-sm-6">
<div class="card-001" style="">
<div class="card-001-img" style="">[[文件:C++.png|link=]]</div>
<div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div>
<div class="card-001-p" style="">
<p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p>
</div >
[[首页|<span class="btn btn-primary">按go按go按go按go</span>]]
</div>
</div>
<div class="col-md-4 col-sm-6">
<div class="card-001" style="">
<div class="card-001-img" style="">[[文件:C++.png|link=]]</div>
<div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div>
<div class="card-001-p" style="">
<p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p>
</div >
[[首页|<span class="btn btn-primary">按go按go按go按go</span>]]
</div>
</div>
</div>
</SyntaxHighlight>
==css==
<SyntaxHighlight lang=css>
.card-001{width:100%;height:400px;padding: 3%;border:2px solid #a1a1a1;border-radius:5px;}
.card-001-img{width:100%;height:auto}
.card-001-title{width:100%;height:9%}
.card-001-p{width:100%;height:35%;border-top-width: 3px;}
</SyntaxHighlight>
{{#css:
.card-001{width:100%;height:400px;padding: 3%;border:2px solid #a1a1a1;border-radius:5px;margin-top:16px}
.card-001-img{width:100%;height:auto}
.card-001-title{width:100%;height:9%}
.card-001-p{width:100%;height:35%;border-top-width: 3px;}
}}
b5d3f660ba78b4bb35d2e38f959c874a1a5ff17a
Widget:Test
274
285
557
2021-02-20T07:00:12Z
13253902
7
新建
wikitext
text/x-wiki
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
</script>
<div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div>
<a>获取内容</a>
f5fcd8f589e2db2ce4ca1cc577be57441acc386d
558
557
2021-02-20T07:01:58Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
</script></includeonly>
<div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div>
<a>获取内容</a>
a98eedf55a9af992bd02392749897522c0d66f34
测试
0
286
559
2021-02-20T07:02:53Z
13253902
7
创建页面,内容为“{{#widget:Test}}”
wikitext
text/x-wiki
{{#widget:Test}}
44ff42617af18cfa0e3d037244617a3adf5e4247
561
559
2021-02-20T07:03:24Z
13253902
7
wikitext
text/x-wiki
{{#widget:Test}}
<div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div>
<a>获取内容</a>
7767a83c2f5d14807b8c2f44d0e09db87471296d
Widget:Test
274
285
560
558
2021-02-20T07:03:19Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
</script></includeonly>
2c7a25f4cc065bcbd0ccd68a66c1e09442e10182
562
560
2021-02-20T07:12:24Z
13253902
7
wikitext
text/x-wiki
<includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
let Housename={{#ask:[[分类:房屋]]|link=none}}
</script>
</includeonly>
4e1e3e9c2f3c0705216fbf5cdc36dc72f249937b
563
562
2021-02-20T07:13:54Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
let Housename={{#ask:[[分类:房屋]]|link=none}};
</script>
</includeonly>
3bcc1d1ae42ccfdac5f139c1c0022238f4f033d5
564
563
2021-02-20T07:16:01Z
13253902
7
wikitext
text/x-wiki
<includeonly>
{{#arraydefine: Housename | {{#ask:[[分类:房屋]]|link=none}} | | }}
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
let Housename = Housename;
</script>
</includeonly>
745e680c2d4aa4541aa9581aca1ffcc1c35e8de2
房屋/共管公寓(90)
0
283
565
549
2021-05-10T04:39:42Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=90<!-- 用顿号隔开 -->
|金币=56000
|人口=700
|经验=700
|时间(天)=1
|时间(时)=20
|时间(分)=
|时间(秒)=
|占地=1×2
}}
76803c9b048c304cbdedad67cad7b052a2a8df0d
模板:房屋
10
11
566
114
2021-05-12T16:41:29Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币
! width=20%|建造时间
! width=20%|占地面积
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! width=20%|获得人口
! width=20%|获得经验
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
|}
</div>
</div>
<includeonly>[[分类:房屋]]</includeonly>
55839d5087f183ac4bcff4f69fe1642343a49f74
569
566
2021-05-12T17:02:47Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币
! width=20%|建造时间
! width=20%|占地面积
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! width=20%|获得人口
! width=20%|获得经验
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">最大数量:{{{最大数量|}}}<br>
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
所需金币:{{{金币|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:房屋]]</includeonly>
0d2ce747f887bf3ce5a592c120e149cf38de7c63
570
569
2021-05-12T17:04:56Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币
! width=20%|建造时间
! width=20%|占地面积
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! width=20%|获得人口
! width=20%|获得经验
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br>
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
所需金币:{{{金币|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:房屋]]</includeonly>
79f4be2b7ce1c2ea0e195145be727f2e4c1d5b3d
571
570
2021-05-12T17:07:18Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币
! width=20%|建造时间
! width=20%|占地面积
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! width=20%|获得人口
! width=20%|获得经验
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br>
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
所需金币:{{{金币|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:房屋]]</includeonly>
3ccb18d248b03e6b8eafa4383d09f5971b92eebe
模板:社区建筑
10
34
567
119
2021-05-12T16:42:42Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
2ff8dcc546c9a7f0e0866a1e8c3761a20155e502
568
567
2021-05-12T16:44:31Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<includeonly>[[分类:社区建筑]]</includeonly>
6b12a6ca7144e3445d670ed78da2c774a0735b89
572
568
2021-05-12T17:18:03Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
所需金币:{{{金币|}}}<br>
所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|钻头×{{{电锯|}}} }}{{#if:{{{电钻|}}}|钻头×{{{电钻|}}} }}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br>
获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br>
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:社区建筑]]</includeonly>
01fad49c14e5721524a2fc6fbcef7e5b1c103d12
573
572
2021-05-12T17:20:53Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
所需金币:{{{金币|}}}<br>
所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|钻头×{{{电锯|}}} }}{{#if:{{{电钻|}}}|钻头×{{{电钻|}}} }}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br>
获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br>
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:社区建筑]]</includeonly>
7a2ac2c93e998e6ad62a09def31031453efc0bec
574
573
2021-05-12T17:26:30Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
所需金币:{{{金币|}}}<br>
所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|电锯×{{{电锯|}}} }}{{#if:{{{电钻|}}}|电钻×{{{电钻|}}} }}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br>
获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br>
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:社区建筑]]</includeonly>
c0d75e81b9ae47a2fc8af79dc9b0d82e8141152c
MediaWiki:Gadget-section-System
8
287
575
2021-05-22T06:08:44Z
13253902
7
创建页面,内容为“系统”
wikitext
text/x-wiki
系统
1a1f6dff782621b434d4c4cf9fdae5c07cf2c0c6
MediaWiki:Gadgets-definition
8
56
576
550
2021-05-22T06:09:29Z
13253902
7
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
a70b5e940cd0dee199133b89075491dd9fc90baa
MediaWiki:Gadget-ScrollToc
8
288
577
2021-05-22T06:09:56Z
13253902
7
创建页面,内容为“'''ScrollToc''':滚动监听目录插件,仅在电脑端生效,移动端无效。”
wikitext
text/x-wiki
'''ScrollToc''':滚动监听目录插件,仅在电脑端生效,移动端无效。
c77baa3cbf784c58f6bbf1e02f4358e6b20310cc
MediaWiki:Gadget-ScrollToc.js
8
289
578
2021-05-22T06:10:39Z
13253902
7
创建页面,内容为“mw.loader.load("/wiki/load.php?modules=ext.gadget.ScrollToc&only=scripts");”
javascript
text/javascript
mw.loader.load("/wiki/load.php?modules=ext.gadget.ScrollToc&only=scripts");
f1488d89682dd8361fb84a163b25d35da0333e10
Widget:测试
274
290
579
2021-06-02T06:21:39Z
13253902
7
测试
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div>
<div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div>
<div class="pure-control-group">
<label for="lvs">等级:</label>从
<select id="lvs"></select>至
<select id="lve"></select>
</div>
<div class="pure-control-group">
<label for="name">属性:</label>
<select id="name"></select>
</div>
<div class="pure-control-group">
<label for="place">灵脉光渊最高等级:</label>
<select id="place"></select>
</div>
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</div>
c7d5122515ba3c1c91ca930571f61c3c33c202b8
580
579
2021-06-02T07:03:53Z
13253902
7
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
{| class="wikitable" style="width:100%;"
|-
!兵刃等级
|<div class="pure-control-group"><label for="lvs">等级:</label>从<select id="lvs"></select>至<select id="lve"></select></div>
!灵脉光渊最高等级
|<div class="pure-control-group"><label for="place"></label><select id="place"></select></div>
|-
|colspan=4|
<div id="result">
<div id='total'><span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
|}
* [https://bbs.nga.cn/read.php?tid=26330724 数据来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=42444741 啦啦子嘻]
* [http://i2534.gitee.io/tdj/calculator/weapon/index.html 代码来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=166963 9e6]
e856d260079643c2c758c17827b952f4f15b26b3
581
580
2021-06-02T07:10:26Z
13253902
7
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tbody>
<tr>
<th>兵刃等级</th>
<td><div class="pure-control-group"><label for="lvs">等级:</label>从<select id="lvs"></select>至<select id="lve"></select></div>
</td>
<th>灵脉光渊最高等级
</th>
<td><div class="pure-control-group"><label for="place"></label><select id="place"></select></div>
</td></tr>
<tr>
<td colspan="4">
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</td></tr></tbody></table>
* [https://bbs.nga.cn/read.php?tid=26330724 数据来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=42444741 啦啦子嘻]
* [http://i2534.gitee.io/tdj/calculator/weapon/index.html 代码来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=166963 9e6]
ab984c80f419d09b36dff3e9d9ef70b1e31c1911
582
581
2021-06-02T07:12:01Z
13253902
7
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div>
<div class="pure-control-group">
<label for="lvs">等级:</label>从
<select id="lvs"></select>至
<select id="lve"></select>
</div>
<div class="pure-control-group">
<label for="name">属性:</label>
<select id="name"></select>
</div>
<div class="pure-control-group">
<label for="place">灵脉光渊最高等级:</label>
<select id="place"></select>
</div>
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</div>
* [https://bbs.nga.cn/read.php?tid=26330724 数据来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=42444741 啦啦子嘻]
* [http://i2534.gitee.io/tdj/calculator/weapon/index.html 代码来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=166963 9e6]
92b0fb36c9ea3bb6db86ab882c39b72c67d1eac8
583
582
2021-06-02T07:15:40Z
13253902
7
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div>
<div class="pure-control-group"><label for="lvs">等级:</label>从<select id="lvs"></select>至<select id="lve"></select></div>
<div class="pure-control-group"><label for="name">属性:</label><select id="name"></select></div>
<div class="pure-control-group"><label for="place">灵脉光渊最高等级:</label><select id="place"></select></div>
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</div>
* [https://bbs.nga.cn/read.php?tid=26330724 数据来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=42444741 啦啦子嘻]
* [http://i2534.gitee.io/tdj/calculator/weapon/index.html 代码来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=166963 9e6]
ea73ff0e3645db969a250447806c9ebdbc0c8bc8
584
583
2021-06-02T07:16:07Z
13253902
7
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div>
<div class="pure-control-group"><label for="lvs">等级:</label>从<select id="lvs"></select>至<select id="lve"></select></div>
<div class="pure-control-group"><label for="name">属性:</label><select id="name"></select></div>
<div class="pure-control-group"><label for="place">灵脉光渊最高等级:</label><select id="place"></select></div>
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</div>
660a5c31c1dc9cc682221345651a10abf651f268
585
584
2021-06-02T07:17:25Z
13253902
7
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div>
<div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div>
<div class="pure-control-group">
<label for="lvs">等级:</label>从
<select id="lvs"></select>至
<select id="lve"></select>
</div>
<div class="pure-control-group">
<label for="name">属性:</label>
<select id="name"></select>
</div>
<div class="pure-control-group">
<label for="place">灵脉光渊最高等级:</label>
<select id="place"></select>
</div>
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</div>
c7d5122515ba3c1c91ca930571f61c3c33c202b8
586
585
2021-06-02T07:18:25Z
13253902
7
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div>
<div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div>
<div class="pure-control-group">
<label for="lvs">等级:</label>从
<select id="lvs"></select>至
<select id="lve"></select>
</div>
<div class="pure-control-group">
<label for="name">属性:</label>
<select id="name"></select>
</div>
<div class="pure-control-group">
<label for="place">灵脉光渊最高等级:</label>
<select id="place"></select>
</div>
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</div>
3189ab3a45a32da778c0c478831f02a1b5f1cd54
587
586
2021-06-02T07:19:30Z
13253902
7
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div>
<div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div>
<div class="pure-control-group">
<label for="lvs">等级:</label>从
<select id="lvs"></select>至
<select id="lve"></select>
</div>
<div class="pure-control-group">
<label for="name">属性:</label>
<select id="name"></select>
</div>
<div class="pure-control-group">
<label for="place">灵脉光渊最高等级:</label>
<select id="place"></select>
</div>
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</div>
c7d5122515ba3c1c91ca930571f61c3c33c202b8
588
587
2021-06-02T07:29:22Z
13253902
7
wikitext
text/x-wiki
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
</script>
<div>
<div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div>
<form class="pure-form pure-form-aligned">
<fieldset>
<div class="pure-control-group">
<label for="lvs">等级:</label>从
<select id="lvs"></select>至
<select id="lve"></select>
</div>
<div class="pure-control-group">
<label for="name">属性:</label>
<select id="name"></select>
</div>
<div class="pure-control-group">
<label for="place">灵脉光渊最高等级:</label>
<select id="place"></select>
</div>
<!--
<div class="pure-controls">
<button id="btnCalc" class="pure-button">计算</button>
</div>
-->
</fieldset>
</form>
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</div>
<script>
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
9184aada2d4acaa25408e9276a1c83a0e1132d4d
589
588
2021-06-02T11:42:03Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
</script>
<div>
<div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div>
<form class="pure-form pure-form-aligned">
<fieldset>
<div class="pure-control-group">
<label for="lvs">等级:</label>从
<select id="lvs"></select>至
<select id="lve"></select>
</div>
<div class="pure-control-group">
<label for="name">属性:</label>
<select id="name"></select>
</div>
<div class="pure-control-group">
<label for="place">灵脉光渊最高等级:</label>
<select id="place"></select>
</div>
<!--
<div class="pure-controls">
<button id="btnCalc" class="pure-button">计算</button>
</div>
-->
</fieldset>
</form>
<div id="result">
<div id='total'> <span>需要材料总计:</span>
<table class="pure-table">
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
</div>
<script>
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
a085112d719264109e1b8dce8a4f104a65e174eb
590
589
2021-06-02T11:44:56Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
213100e7d78351a531ba2f09334d6e31f7d0adc6
591
590
2021-06-02T12:23:45Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tbody>
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
</tbody>
</table>
5c12c857bddab738c414560da83cd2f850574dcf
592
591
2021-06-02T12:39:44Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tbody>
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性:</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
</tbody>
</table>
b91ee1913cb7cfc107e18b6fbbc7cd9c045631cf
593
592
2021-06-02T12:54:18Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性:</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
</table>
ebe842fc30b7c5bfd8d4eda19772fa86e9c0d577
594
593
2021-06-02T13:00:14Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性:</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
</table>
<div id="result">
<div id='total'><span>需要材料总计:</span>
<table class="pure-table wikitable">
<thead>
<tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr>
</thead>
<tbody>
<tr><td>135</td><td>115</td><td>128</td><td>141</td><td>87</td><td>33</td><td>45840</td></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
d6f249fe89f8c680e25aaaee2f3f6928b76dbd51
595
594
2021-06-02T13:02:44Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性:</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="pure-table wikitable">
<thead>
<tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr>
</thead>
<tbody>
<tr><td>135</td><td>115</td><td>128</td><td>141</td><td>87</td><td>33</td><td>45840</td></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
990873bcb58fe2b37bd9c68fe1589e7ec65023f2
596
595
2021-06-02T14:43:47Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<thead>
<tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr>
</thead>
<tbody>
<tr><td>135</td><td>115</td><td>128</td><td>141</td><td>87</td><td>33</td><td>45840</td></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
7b9a7507ce08747920f414d78b5c97a4fb5b3b94
597
596
2021-06-02T14:45:51Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr><td>135</td><td>115</td><td>128</td><td>141</td><td>87</td><td>33</td><td>45840</td></tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
817a079ddaabea47ef3948516c1c09434a5bd3f6
598
597
2021-06-02T14:47:47Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
<tr>
<td>[[文件:经验.png]]</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
c6400cc6fd31f02477b9722a85c7dc248537aad3
599
598
2021-06-02T14:51:16Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
<thead>
<tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr>
</thead>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
1fc7cf9a6fcec1dd164546f790e57358545325c5
600
599
2021-06-02T14:52:02Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<thead>
<tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr>
</thead>
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
51c7de1fb096da3ab73d2a919a7f370d24057131
601
600
2021-06-02T15:00:39Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
{{测试}}
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
10237554bc7a90ace30e7f8d9bd09e7fe9c1dc1e
602
601
2021-06-02T15:03:35Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
c1fbc951be8f68c9b5a6fcd740a79f4091d5c7d6
603
602
2021-06-02T15:07:00Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
47b5f710c70f03a98e2e3ca4b71a762f9202ef73
604
603
2021-06-02T15:11:25Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<div id="result">
<div id='total'>
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</div>
</div>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
4293cb327956dc4a9af0e70fe50060dc1f9de3ee
605
604
2021-06-02T15:14:14Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['<font color=red>燧炎之铁</font>', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
4571544fea8d4aa1446fdaf329e2ae041ad15e2b
606
605
2021-06-02T15:15:57Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
a19592b6cae36bbfcc43269aa5b695f6f8e10c49
607
606
2021-06-02T15:21:34Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"><option value="暗" selected>暗</option></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<thead>
<tr></tr>
</thead>
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
d79272c6d9ac6786b599101a5788c147198a60df
608
607
2021-06-02T15:26:01Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"><option value="<!--{$prop}-->" selected></option></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<thead>
<tr></tr>
</thead>
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
91db34a6558ae19ce9b3c9d66c838516aabadf92
Widget:测试
274
290
609
608
2021-06-02T15:38:27Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<th colspan="4">需要材料总计</th>
</tr>
</table>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td>135</td>
<td>115</td>
<td>128</td>
<td>141</td>
<td>87</td>
<td>33</td>
<td>45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
9a4f35641b9c06794559fdf246d52caa63423b1a
610
609
2021-06-02T15:40:18Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td>${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
</table>
6401be99b1b1ed560c776a065ee83ead19306743
611
610
2021-06-02T15:42:12Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</div>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
</table>
f2199e085237c5009cdb02c6a566390d9966d68d
612
611
2021-06-02T15:44:29Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
</table>
<div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span><div>
0c838525721cc2d4fb14d8de36f364e942ac051f
613
612
2021-06-02T15:49:45Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>td').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<td id="info">
<span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
</td>
</tr>
</table>
01c2567f96a1678261084705605bdcc99226d86e
614
613
2021-06-02T15:51:07Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<td>
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span></div>
</td>
</tr>
</table>
f920c1746d6cd1fe67bcb7bc665f3f843a61b904
615
614
2021-06-02T15:52:09Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<td>
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
b2bf91934ada043ef23a22be4f7546afad146521
616
615
2021-06-02T15:53:19Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<td colspan="5">
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
dfb3d5dc6bf3cb6a748a7b49237b1a7acfb78b6b
617
616
2021-06-02T15:55:02Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable text-center" style="width:100%;">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable text-center" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<td colspan="5">
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
a4e88b537ef97791a91c08e5a1fd4b96c3f811a2
618
617
2021-06-02T15:55:56Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable text-center" style="width:100%;">
<tr>
<th style="width:25%"><label for="lvs">等级</label></th>
<td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:25%"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:25%"><select id="place"></select></td>
</tr>
<tr>
<td colspan="5">
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
18e5698b15397608677e92963b0f888b063ce5a0
619
618
2021-06-02T16:01:59Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('Level invalid');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable text-center" style="width:100%;">
<tr>
<th style="width:width:calc(100% / 7);"><label for="lvs">等级</label></th>
<td style="width:width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:width:calc(100% / 3.5);"><select id="place"></select></td>
</tr>
<tr>
<td colspan="5" class="text-left">
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
8d3749df2ad1d1e4115dd9de3c86a487f80971a1
620
619
2021-06-02T16:04:23Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('淬火后兵刃等级必须大于淬火前兵刃等级');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable text-center" style="width:100%;">
<tr>
<th style="width:width:calc(100% / 7);"><label for="lvs">等级</label></th>
<td style="width:width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:width:calc(100% / 3.5);"><select id="place"></select></td>
</tr>
<tr>
<td colspan="5" class="text-left">
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
69db907ad8e038d330eff85d7ded4c2eb60d13fc
621
620
2021-06-02T16:09:13Z
13253902
7
wikitext
text/x-wiki
// 代码转载自:http://i2534.gitee.io/tdj/calculator/weapon/index.html
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('淬火后兵刃等级必须大于淬火前兵刃等级');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable text-center" style="width:100%;">
<tr>
<th style="width:width:calc(100% / 7);"><label for="lvs">等级</label></th>
<td style="width:width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:width:calc(100% / 3.5);"><select id="place"></select></td>
</tr>
<tr>
<td colspan="5" class="text-left">
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
7a304c2b9d483923166a49d4bd94c44aeee205c2
622
621
2021-06-02T16:09:57Z
13253902
7
wikitext
text/x-wiki
<!-- 代码转载自:http://i2534.gitee.io/tdj/calculator/weapon/index.html -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('淬火后兵刃等级必须大于淬火前兵刃等级');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable text-center" style="width:100%;">
<tr>
<th style="width:width:calc(100% / 7);"><label for="lvs">等级</label></th>
<td style="width:width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:width:calc(100% / 3.5);"><select id="place"></select></td>
</tr>
<tr>
<td colspan="5" class="text-left">
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
2f8e89f29b3f1c86c266c34597c1b45176d8240c
623
622
2021-06-02T16:12:10Z
13253902
7
wikitext
text/x-wiki
<!-- 代码转载自:http://i2534.gitee.io/tdj/calculator/weapon/index.html -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('淬火后兵刃等级必须大于淬火前兵刃等级');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable text-center" style="width:100%;">
<tr>
<th style="width:calc(100% / 7);"><label for="lvs">等级</label></th>
<td style="width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"></select></td>
<th style="width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:calc(100% / 3.5);"><select id="place"></select></td>
</tr>
<tr>
<td colspan="5" class="text-left">
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
199682b3704f19c709db75e0572eeead695eb8dd
624
623
2021-06-02T16:39:57Z
13253902
7
wikitext
text/x-wiki
<!-- 代码转载自:http://i2534.gitee.io/tdj/calculator/weapon/index.html -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(() => {
const display = () => {
const lvMin = parseInt($('#lvs').val()),
lvMax = parseInt($('#lve').val());
const pi = parseInt($('#place').val());
const ret = calc(lvMin, lvMax, pi);
const th = $('#total thead>tr').empty(),
tr = $('#total tbody>tr').empty();
const info = $('#info>div').empty();
if (ret) {
const total = ret[0],
count = ret[1],
residue = ret[2];
const ns = names[$('#name').val()];
if (ns) {
for (let i = 0; i < ns.length; i++) {
th.append(`<th>${ns[i]}</th>`);
tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`);
}
}
let html = '';
for (let i = 0; i < count.length; i++) {
if (count[i] > 0) {
html += `<div>${placeLevel[i]} = ${count[i]}<div>`;
}
}
let r = '';
for (let i = 0; i < residue.length; i++) {
if (residue[i] > 0) {
r += `<div>${ns[i]} = ${residue[i]}<div>`;
}
}
if (r.length > 0) {
html += '<span>缺少(灵脉光渊等级不足):</span>' + r;
}
info.html(html);
}
};
const option = (parent, val, text) => {
const opt = $('<option></option>');
opt.val(val);
if (text) {
opt.text(text);
} else {
opt.text(val);
}
parent.append(opt);
};
for (let i = 0; i < consume.length; i++) {
option($('#lvs'), i, i + 1);
option($('#lve'), i, i + 1);
}
for (let n in names) {
option($('#name'), n);
}
for (let i = 0; i < placeLevel.length; i++) {
option($('#place'), i, placeLevel[i]);
}
$('select').on('change', display);
$('#btnCalc').click(display);
});
const names = {
'炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'],
'雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'],
'冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'],
'暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'],
'光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱']
};
//0-59
const consume = [
[0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 10],
[1, 0, 0, 0, 0, 0, 20],
[1, 0, 0, 0, 0, 0, 30],
[2, 0, 0, 0, 0, 0, 40],
[2, 0, 0, 0, 0, 0, 50],
[2, 0, 0, 0, 0, 0, 60],
[3, 0, 0, 0, 0, 0, 70],
[3, 0, 0, 0, 0, 0, 80],
[3, 0, 0, 0, 0, 0, 90],
[4, 0, 0, 0, 0, 0, 100],
[4, 0, 0, 0, 0, 0, 110],
[4, 0, 0, 0, 0, 0, 120],
[5, 0, 0, 0, 0, 0, 130],
[5, 0, 0, 0, 0, 0, 140],
[5, 1, 0, 0, 0, 0, 150],
[5, 1, 0, 0, 0, 0, 160],
[5, 1, 0, 0, 0, 0, 170],
[5, 2, 0, 0, 0, 0, 180],
[5, 2, 0, 0, 0, 0, 190],
[5, 2, 0, 0, 0, 0, 200],
[5, 3, 0, 0, 0, 0, 210],
[5, 3, 0, 0, 0, 0, 220],
[5, 3, 0, 0, 0, 0, 230],
[5, 4, 1, 0, 0, 0, 240],
[5, 4, 1, 0, 0, 0, 250],
[5, 4, 1, 0, 0, 0, 260],
[5, 5, 1, 0, 0, 0, 280],
[5, 5, 2, 0, 0, 0, 300],
[5, 5, 2, 0, 0, 0, 350],
[5, 5, 2, 0, 0, 0, 400],
[5, 5, 2, 0, 0, 0, 450],
[5, 5, 3, 0, 0, 0, 500],
[5, 5, 3, 0, 0, 0, 550],
[0, 5, 3, 1, 0, 0, 600],
[0, 5, 3, 2, 0, 0, 650],
[0, 5, 4, 2, 0, 0, 700],
[0, 5, 4, 3, 0, 0, 750],
[0, 5, 4, 3, 0, 0, 800],
[0, 5, 4, 3, 0, 0, 850],
[0, 5, 5, 4, 0, 0, 900],
[0, 5, 5, 4, 0, 0, 950],
[0, 5, 5, 4, 0, 0, 1000],
[0, 5, 5, 5, 0, 0, 1100],
[0, 0, 6, 5, 1, 0, 1200],
[0, 0, 6, 5, 2, 0, 1300],
[0, 0, 6, 5, 3, 0, 1400],
[0, 0, 6, 5, 3, 0, 1500],
[0, 0, 7, 6, 4, 0, 1600],
[0, 0, 7, 6, 4, 0, 1700],
[0, 0, 7, 6, 5, 0, 1800],
[0, 0, 7, 7, 5, 0, 1900],
[0, 0, 8, 7, 6, 0, 2000],
[0, 0, 8, 7, 6, 0, 2100],
[0, 0, 0, 8, 7, 1, 2200],
[0, 0, 0, 8, 7, 3, 2300],
[0, 0, 0, 8, 8, 5, 2400],
[0, 0, 0, 9, 8, 7, 2500],
[0, 0, 0, 9, 9, 8, 2600],
[0, 0, 0, 9, 9, 9, 2700]
];
const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60];
const produce = [
[13, 0, 0, 0, 0, 0], //10
[14, 3, 0, 0, 0, 0], //15
[13, 4, 0, 0, 0, 0], //20
[14, 5, 2, 0, 0, 0], //25
[15, 5, 2, 0, 0, 0], //30
[0, 8, 2, 1, 0, 0], //35
[0, 7, 4, 3, 0, 0], //40
[0, 0, 3, 3, 1, 0], //45
[0, 0, 5, 3, 2, 0], //50
[0, 0, 0, 4, 2, 1], //55
[0, 0, 0, 4, 3, 1] //60
];
const calc = (lvMin, lvMax, placeIndex) => {
const ls = parseInt(lvMin),
le = parseInt(lvMax);
if (le <= ls) {
alert('淬火后兵刃等级必须大于淬火前兵刃等级');
} else {
const total = new Array(consume[ls].length).fill(0);
for (let i = ls; i <= le; i++) {
const item = consume[i];
for (let n = 0; n < item.length; n++) {
total[n] += item[n];
}
}
//console.log(ret);
const residue = total.slice(0, total.length - 1);
const count = new Array(placeLevel.length).fill(0);
for (let r = residue.length - 1; r >= 0; r--) {
if (residue[r] <= 0) {
continue;
}
for (let i = placeIndex; i >= 0; i--) {
const item = produce[i];
if (item[r] > 0) {
let c = Math.ceil(residue[r] / item[r]);
count[i] = c;
for (let n = 0; n < item.length; n++) {
residue[n] -= item[n] * c;
}
break;
}
}
}
//console.log(count);
return [total, count, residue];
}
};
</script>
<div id="result">
<div id='total'>
<table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);">
<tbody>
<tr>
<td style="width:calc(100% / 7);">135</td>
<td style="width:calc(100% / 7);">115</td>
<td style="width:calc(100% / 7);">128</td>
<td style="width:calc(100% / 7);">141</td>
<td style="width:calc(100% / 7);">87</td>
<td style="width:calc(100% / 7);">33</td>
<td style="width:calc(100% / 7);">45840</td>
</tr>
</tbody>
</table>
</div>
</div>
<table class="wikitable text-center" style="width:100%;">
<tr>
<th style="width:calc(100% / 7);"><label for="lvs">等级</label></th>
<td style="width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td>
<td style="display:none;"><label for="name">属性</label><select id="name"><option value="<!--{$prop}-->" selected class="hidden"></option></select></td>
<th style="width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th>
<td style="width:calc(100% / 3.5);"><select id="place"></select></td>
</tr>
<tr>
<td colspan="5" class="text-left">
<div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span>
<div></div>
</div>
</td>
</tr>
</table>
e67799990424aa07a3bd2de215de32e553c5fb7a
625
624
2021-06-03T01:27:22Z
13253902
7
清空页面
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
首页
0
1
626
160
2021-08-09T06:40:56Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<includeonly><div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}</includeonly>
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="ts-title-head">关于WIKI</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
本WIKI为开放编辑权限,任何人都可以在遵守 [https://wiki.biligame.com/wiki/WIKI%E7%A4%BE%E5%8C%BA%E8%A7%84%E5%88%99 BWIKI社区规则] 的前提下进行内容制作,违规者将会被封禁。
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
----
<p class="text-center">本WIKI遵循[https://creativecommons.org/licenses/by-nc-sa/3.0/ BY-NC-SA]协议。(特殊注明除外)</p>
<div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user"> [[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style=""> [[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil"> [[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="ts-title-head" style="margin-top:24px;">关于游戏</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
862424bfcfea1a2b8196d1bc94530ee2079756fa
模板:社区建筑
10
34
627
574
2021-08-11T05:28:24Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面|}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"|
[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}<nowiki></nowiki>
{{#if:{{{玻璃|}}}|[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{玻璃|}}}|}}<nowiki></nowiki>
{{#if:{{{砖块|}}}|[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{砖块|}}}|}}<nowiki></nowiki>
{{#if:{{{混凝土路面|}}}|[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{混凝土路面|}}}|}}<nowiki></nowiki>
{{#if:{{{钻头|}}}|[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{钻头|}}}|}}<nowiki></nowiki>
{{#if:{{{电锯|}}}|[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{电锯|}}}|}}<nowiki></nowiki>
{{#if:{{{电钻|}}}|[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{电钻|}}}|}}<nowiki></nowiki>
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
所需金币:{{{金币|}}}<br>
所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|电锯×{{{电锯|}}} }}{{#if:{{{电钻|}}}|电钻×{{{电钻|}}} }}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br>
获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br>
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:社区建筑]]</includeonly>
0633fd6915cb1256a41522a73888632e23599de3
628
627
2021-08-11T05:30:03Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|等级={{{等级|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|现金={{{现金|}}}
|占地={{{占地|}}}
|类型={{{类型|}}}
|玻璃={{{玻璃|}}}
|砖块={{{砖块|}}}
|混凝土路面={{{混凝土路面|}}}
|钻头={{{钻头|}}}
|电锯={{{电锯|}}}
|电钻={{{电钻|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
| style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! 解锁等级
! 建造时间
! 占地面积
|-
| <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div>
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! colspan="3"|所需金币材料
|-
| colspan="3" style="font-size:x-large;"|
<div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}</div>
<div style="display:inline-block;">{{#if:{{{玻璃|}}}|[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{玻璃|}}}|}}</div>
<div style="display:inline-block;">{{#if:{{{砖块|}}}|[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{砖块|}}}|}}</div>
<div style="display:inline-block;">{{#if:{{{混凝土路面|}}}|[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{混凝土路面|}}}|}}</div>
<div style="display:inline-block;">{{#if:{{{钻头|}}}|[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{钻头|}}}|}}</div>
<div style="display:inline-block;">{{#if:{{{电锯|}}}|[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{电锯|}}}|}}</div>
<div style="display:inline-block;">{{#if:{{{电钻|}}}|[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{电钻|}}}|}}</div>
|-
! 获得人口
! 获得经验
! 获得现金
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
所需金币:{{{金币|}}}<br>
所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|电锯×{{{电锯|}}} }}{{#if:{{{电钻|}}}|电钻×{{{电钻|}}} }}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br>
获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br>
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:社区建筑]]</includeonly>
4e3cc137df19ef686fe6ea0bf5b57a1e243bd981
文件:房屋 带阳台的房子.png
6
291
629
2021-08-20T08:15:55Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带泳池的高层.png
6
292
630
2021-08-20T08:15:55Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 高层建筑.png
6
293
631
2021-08-20T08:15:56Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 公寓综合楼.png
6
294
632
2021-08-20T08:15:56Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
MediaWiki:Editsummary.js
8
295
633
2021-08-27T07:30:48Z
13253902
7
新建
javascript
text/javascript
$(document).ready(function(){
$("#QuickSummary1").click(function(){
$("#wpSummary").val("创建页面");//赋值
});
$("#QuickSummary2").click(function(){
$("#wpSummary").val("修饰语句");//赋值
});
$("#QuickSummary3").click(function(){
$("#wpSummary").val("修正错误");//赋值
});
$("#QuickSummary4").click(function(){
$("#wpSummary").val("内容扩充");//赋值
});
$("#QuickSummary5").click(function(){
$("#wpSummary").val("调整排版");//赋值
});
$("#QuickSummary6").click(function(){
$("#wpSummary").val("调整来源");//赋值
});
$("#QuickSummary7").click(function(){
$("#wpSummary").val("调整内链");//赋值
});
$("#QuickSummary8").click(function(){
$("#wpSummary").val("调整分类");//赋值
});
$("#QuickSummary9").click(function(){
$("#wpSummary").val("维护清理");//赋值
});
});
226cefbe2b4df116c2c39fa64134648d950017e1
MediaWiki:Summary
8
296
634
2021-08-27T07:32:07Z
13253902
7
新建
wikitext
text/x-wiki
{{ResourceLoader|Editsummary.js}}摘要:
<small style="font-weight:normal;">
(请简要描述您所作出的修改,或选择:
<span id="QuickSummary1" title="创建页面">[[#.|创建页面]]</span> |
<span id="QuickSummary2" title="修饰语句">[[#.|修饰语句]]</span> |
<span id="QuickSummary3" title="修正错误">[[#.|修正错误]]</span> |
<span id="QuickSummary4" title="内容扩充">[[#.|内容扩充]]</span> |
<span id="QuickSummary5" title="调整排版">[[#.|调整排版]]</span> |
<span id="QuickSummary6" title="调整来源">[[#.|调整来源]]</span> |
<span id="QuickSummary7" title="调整内链">[[#.|调整内链]]</span> |
<span id="QuickSummary8" title="调整分类">[[#.|调整分类]]</span> |
<span id="QuickSummary9" title="维护清理">[[#.|维护清理]]</span>
)
</small>
dd03572c2d3afb514aa4ed004c3ac1528eadaa12
638
634
2021-08-27T13:19:05Z
13253902
7
wikitext
text/x-wiki
{{ResourceLoader|Editsummary.js}}
摘要:<small style="font-weight:normal;">(请简要描述您所作出的修改,或选择:</small>
<span id="QuickSummary1" title="创建页面" class="btn btn-default btn-xs">创建页面</span>
<span id="QuickSummary2" title="修饰语句" class="btn btn-default btn-xs">修饰语句</span>
<span id="QuickSummary3" title="修正错误" class="btn btn-default btn-xs">修正错误</span>
<span id="QuickSummary4" title="内容扩充" class="btn btn-default btn-xs">内容扩充</span>
<span id="QuickSummary5" title="调整排版" class="btn btn-default btn-xs">调整排版</span>
<span id="QuickSummary6" title="调整来源" class="btn btn-default btn-xs">调整来源</span>
<span id="QuickSummary7" title="调整内链" class="btn btn-default btn-xs">调整内链</span>
<span id="QuickSummary8" title="调整分类" class="btn btn-default btn-xs">调整分类</span>
<span id="QuickSummary9" title="维护清理" class="btn btn-default btn-xs">维护清理</span>
<small style="font-weight:normal;">)</small>
010a61d489aa09f61c5fb35bffd6dd22929801ac
模板:ResourceLoader
10
297
635
2021-08-27T07:33:14Z
13253902
7
新建
wikitext
text/x-wiki
<includeonly><div class="resourceLoader"
style="display:none"
data-is-module="{{{isModule|false}}}"
data-mime="{{{MIME|}}}"
>{{{1|}}}</div></includeonly><noinclude>
使用[//www.mediawiki.org/wiki/ResourceLoader/Core_modules#mw.loader.load mw.loader.load]载入js脚本、css样式表或js模块。
js脚本仅限于MediaWiki命名空间下的页面。
参数列表:
<pre>
#1
页面名称或模块名称。
isModule
当值为"true"时,载入js模块或小工具,并忽略后面的参数。
MIME
"text/javascript" 或 "text/css"
</pre>
</noinclude>
48d41516f9a9089bd878ed1c922dd36ac3df85e9
636
635
2021-08-27T12:46:36Z
13253902
7
wikitext
text/x-wiki
<includeonly><div class="resourceLoader"
style="display:none"
data-is-module="{{{isModule|false}}}"
data-mime="{{{MIME|}}}"
>{{{1|}}}</div>
</includeonly><noinclude>
<font color=red>转载自:方舟指令WIKI</font>
使用[//www.mediawiki.org/wiki/ResourceLoader/Core_modules#mw.loader.load mw.loader.load]载入js脚本、css样式表或js模块。
js脚本仅限于MediaWiki命名空间下的页面。
参数列表:
<pre>
#1
页面名称或模块名称。
isModule
当值为"true"时,载入js模块或小工具,并忽略后面的参数。
MIME
"text/javascript" 或 "text/css"
</pre>
</noinclude><noinclude>
[[Category:维护模板]]
</noinclude>
573531836eeb2d0f073f1ac45e7466db58974c9a
637
636
2021-08-27T13:16:37Z
13253902
7
wikitext
text/x-wiki
<includeonly><div class="resourceLoader" style="display:none" data-is-module="{{{isModule|false}}}" data-mime="{{{MIME|}}}" >{{{1|}}}</div></includeonly><noinclude>
<font color=red>转载自:方舟指令WIKI</font>
使用[//www.mediawiki.org/wiki/ResourceLoader/Core_modules#mw.loader.load mw.loader.load]载入js脚本、css样式表或js模块。
js脚本仅限于MediaWiki命名空间下的页面。
参数列表:
<pre>
#1
页面名称或模块名称。
isModule
当值为"true"时,载入js模块或小工具,并忽略后面的参数。
MIME
"text/javascript" 或 "text/css"
</pre>
</noinclude><noinclude>
[[Category:维护模板]]
</noinclude>
909cd2d71215f30b6489c81aa3e25b2a6dac20de
799
637
2021-11-18T08:40:19Z
wiki>33961147
0
wikitext
text/x-wiki
<includeonly>{{#if:{{#varexists:防止多次加载ResourceLoaderJS}}||{{#vardefineecho:防止多次加载ResourceLoaderJS|{{#widget:ResourceLoader}}}}}}
<div class="resourceLoader"
style="display:none"
data-is-module="{{{isModule|false}}}"
data-mime="{{{MIME|}}}"
>{{{1|}}}</div>
</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude>
7f41181853194aad9f366dd8da9f7bfd4fe0fe16
模板:JS
10
363
797
2021-11-18T10:06:58Z
wiki>9388102
0
创建页面,内容为“<includeonly>{{ResourceLoader|MediaWiki:{{{1}}}|debug=true}}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude>”
wikitext
text/x-wiki
<includeonly>{{ResourceLoader|MediaWiki:{{{1}}}|debug=true}}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude>
3cf20dc867db42608a55326ac2374ec4f309d8a7
模板:图片放大
10
361
793
2021-11-25T07:33:47Z
wiki>9388102
0
创建页面,内容为“<includeonly><div class="showOnBox"><div class="showOn" style="width:{{#if:{{{2|}}}|{{{2|}}}|200px}}"> file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|{{#if:{{{2|}}}|{…”
wikitext
text/x-wiki
<includeonly><div class="showOnBox"><div class="showOn" style="width:{{#if:{{{2|}}}|{{{2|}}}|200px}}">
[[file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|{{#if:{{{2|}}}|{{{2|}}}|200px}}|link=|class=showOnImgSource]]<div>{{{默认文字|}}}</div></div>
<div class="showOnImg" style="top:0; left:0;">[[file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|class=showOnImgBox|{{#if:{{{3|}}}|{{{3|}}}|400px}}|link=]]<div class="showOnText" style="width:{{{3|}}}">{{{放大文字|}}}</div></div></div>{{#if: {{#varexists: 图片放大 }} | | {{#vardefine: 图片放大|1}} {{JS|Amplification}}{{#css:
.showOnBox{
display:inline-block;
margin:5px;
}
.showOnImg {
position: fixed;
display:flex;
background-color: rgba(0,0,0,0.50);
z-index: 1000;
overflow: auto;
height: 100%;
width: 100%;
cursor: zoom-out;
transition: 0.4s;
opacity: 0;
visibility: hidden;
text-align: center;
flex-direction: column;
align-items: center;
justify-content: center;
}
.showOnImgSource {
cursor: zoom-in;
}
.showOn{
display: flex;
flex-direction: column;
align-items: center;
}
.bui-sns-info{
z-index: 0;
}
.showOnImgBox {
text-align: center;
width: auto;
max-height: 100%;
}
.showOnText{
font-size: 16px;
font-weight: bold;
color: #fff;
margin-top: 5px;
}
}} }}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude>
3d0c38db646ba507e8444ed6eab4d5734ceb28e7
MediaWiki:Amplification.js
8
362
795
2021-11-25T07:34:27Z
wiki>9388102
0
创建页面,内容为“$(".showOn").click(function() { var showElemnet = $(this).next(".showOnImg").clone().appendTo("body"); showElemnet.css({visibility:"visible", opacity: 1})…”
javascript
text/javascript
$(".showOn").click(function() {
var showElemnet = $(this).next(".showOnImg").clone().appendTo("body");
showElemnet.css({visibility:"visible", opacity: 1})
.click(function() {
$(this).remove();
})
});
e00148868c45fc3d6eb167535733686a2466bfae
帮助:图片放大
12
365
803
2021-11-26T08:26:05Z
wiki>9388102
0
/* 使用说明 */
wikitext
text/x-wiki
{{模板}}__NOTOC__<div class="row">
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
== 简单说明 ==
{{模板|信息|版本|1.0}}
{{模板|信息|说明|点击图片可放大,兼容手机端阅读}}
== 使用说明 ==
※注意:目前的模板写法不可换行
{{模板|标准|
<esc>{{图片放大|图片名称(png格式)|默认大小(可选/默认200px)|放大后大小(可选/默认400px)|默认文字=默认文字(选填)|放大文字=放大文字(选填)}}</esc>
}}
== 示例 ==
{{模板|示例|
<esc>{{图片放大|Test|200px|800px|默认文字=我是默认文字|放大文字=我是放大文字}}</esc>
}}
</div>
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
== 作者 ==
{{模板|作者|16083703}}
<div class="hidden-xs">
== 标签 ==
{{模板|信息|标签|模板}}
</div>
== 依赖页面 ==
{{模板|依赖
|模板:JS
|模板:ResourceLoader
|模板:图片放大
|mediawiki:Amplification.js
}}
== 更新日志 ==
1.0
</div>
</div>
9599c93aee998c99353d54744b76d47bd3dc7208
文件:辣椒.png
6
298
639
2021-11-29T12:26:28Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:玫瑰.png
6
299
640
2021-11-29T12:26:28Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:棉花.png
6
300
641
2021-11-29T12:26:29Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:茉莉.png
6
301
642
2021-11-29T12:26:29Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:水稻.png
6
302
643
2021-11-29T12:26:29Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:丝绸树.png
6
303
644
2021-11-29T12:26:30Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:松树.png
6
304
645
2021-11-29T12:26:30Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:土豆.png
6
305
646
2021-11-29T12:26:31Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:橡胶树.png
6
306
647
2021-11-29T12:26:31Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:小麦.png
6
307
648
2021-11-29T12:26:31Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:玉米.png
6
308
649
2021-11-29T12:26:32Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:草莓.png
6
309
650
2021-11-29T12:26:32Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:茶树.png
6
310
651
2021-11-29T12:26:32Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:番茄.png
6
311
652
2021-11-29T12:26:33Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:甘蔗.png
6
312
653
2021-11-29T12:26:33Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:胡萝卜.png
6
313
654
2021-11-29T12:26:33Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:花生植物.png
6
314
655
2021-11-29T12:26:34Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:咖啡树.png
6
315
656
2021-11-29T12:26:34Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:可可树.png
6
316
657
2021-11-29T12:26:34Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
Widget:Test1
274
317
658
2021-12-13T14:19:00Z
13253902
7
创建页面,内容为“<includeonly><script> function showData(data) { console.info("Get Into showData"); // json对象转成字符串 var result = JSON.stringify(data); $("#text"…”
wikitext
text/x-wiki
<includeonly><script>
function showData(data) {
console.info("Get Into showData");
// json对象转成字符串
var result = JSON.stringify(data);
$("#text").val(result);
}
// 调用
$(document).ready(function() {
$("#btn").click(function() {
$.ajax({
url: "https://tdj-activity.zlongame.com/tdj/data/mQuery.do?id=0&action=info&module=hero&type=detail&query=yuchiliang",
type: "GET",
dataType: "jsonp",
//指定服务器返回的数据类型
jsonpCallback: "showData",
// 指定回调函数名称或直接使用回掉函数success
jsonp: "callback",
// 默认callback
success: function(data) {
console.info("Get Into success");
// json对象转成字符串
// var result = JSON.stringify(data);
// $("#text").val(result);
}
});
});
});
</script>
<input id="btn" type="button" value="跨域请求数据" />
<textarea id="text" style="width: 200px; height: 100px;">
</textarea></includeonly>
d02ebcd189b0e20f17ad232a58fb4563b1735a24
模板:作物
10
318
659
2021-12-22T07:18:19Z
13253902
7
创建页面,内容为“{{#set: |中文={{{中文|}}} |金币={{{金币|}}} |售价={{{售价|}}} |经验={{{经验|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时…”
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|售价={{{售价|}}}
|经验={{{经验|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! width=25%|所需金币
! width=25%|成熟时间
! width=25%|获得经验
! width=25%|售出价格
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{售价|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
解锁等级:{{{等级|}}}<br>
所需金币:{{{金币|}}}<br>
成熟时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:房屋]]</includeonly>
334e8c879f1c8200cce682e6767d6512b0f30b9d
681
659
2021-12-22T12:36:39Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|售价={{{售价|}}}
|经验={{{经验|}}}
|时间(天)={{{时间(天)|}}}
|时间(时)={{{时间(时)|}}}
|时间(分)={{{时间(分)|}}}
|时间(秒)={{{时间(秒)|}}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9">
{| class="wikitable" style="text-align: center;width:100%"
! width=25%|所需金币
! width=25%|成熟时间
! width=25%|获得经验
! width=25%|售出价格
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{售价|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
解锁等级:{{{等级|}}}<br>
所需金币:{{{金币|}}}<br>
成熟时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:作物]]</includeonly>
822f125960857ae080f6ac98d5c72e772fac8bc1
批量
0
319
660
2021-12-22T12:30:07Z
13253902
7
创建页面,内容为“搬运自:[https://wiki.biligame.com/wiki/用户:33961147/tool 奇迹暖暖点点大佬处工具集] 批量刷新 [https://wiki.biligame.com/jiangnan/Widget:刷…”
wikitext
text/x-wiki
搬运自:[https://wiki.biligame.com/wiki/用户:33961147/tool 奇迹暖暖点点大佬处工具集]
批量刷新 [https://wiki.biligame.com/jiangnan/Widget:刷新 widget:刷新]
批量写页面(调用模板页面) [https://wiki.biligame.com/jiangnan/Widget:pagefill widget:pagefill]
批量更新页面(基于form) [https://wiki.biligame.com/jiangnan/Widget:pageupdate widget:pageupdate]
批量增删分类 [https://wiki.biligame.com/jiangnan/Widget:分类 widget:分类]
批量追加内容 [https://wiki.biligame.com/jiangnan/Widget:分类 widget:分类]
批量删除页面 [https://wiki.biligame.com/jiangnan/Widget:删除 widget:删除]
2b8034a9f4f18f5d339004839551f2f9947893d0
Widget:Pagefill
274
320
661
2021-12-22T12:30:33Z
13253902
7
创建页面,内容为“<includeonly><div id="BatchCreateByTemplate"> <textarea id="BCBTexcel" style="width:100%;height:300px"></textarea> <div id="BCBTdisplay" class="row"></div> <button i…”
wikitext
text/x-wiki
<includeonly><div id="BatchCreateByTemplate">
<textarea id="BCBTexcel" style="width:100%;height:300px"></textarea>
<div id="BCBTdisplay" class="row"></div>
<button id="BCBTsubmit" style="padding:0.5em 1em">确认创建</button>
<script>
BCBTMeta={
"template":"",
"key":[],
"page":{},
"state":"ready",
"titles": [],
"index":0
}
BCBTFun={
"initialize":function(){
if(mw.config.get('wgUserGroups').indexOf("sysop")==-1){
//document.getElementById("BatchCreateByTemplate").innerHTML="你无权使用这个功能。"
//return
}
document.getElementById("BCBTexcel").oninput=function(){
let row=this.value.split("\n")
let title=row[0].split("\t")
title=title.map(function(e){return e.trim()})
BCBTMeta.template=title[0]
BCBTMeta.key=[]
BCBTMeta.page={}
for(let i=1,ilen=title.length;i<ilen;i++){
BCBTMeta.key.push(title[i])
}
for(let i=1,ilen=row.length;i<ilen;i++){
let cell=row[i].split("\t")
cell=cell.map(function(e){return e.trim()})
if(cell[0]){
BCBTMeta.page[cell[0]]=[]
for(let j=1,jlen=title.length;j<jlen;j++){
BCBTMeta.page[cell[0]].push(cell[j]||"")
}
}
}
let BCBTdisplay=document.getElementById("BCBTdisplay")
BCBTdisplay.innerHTML="";
for(let key in BCBTMeta.page){
let text="[[<a href="+mw.config.values.wgScriptPath+"/"+encodeURIComponent(key)+" title="+key+" target=_blank>"+key+"</a>]]"
text+="\n\n{{"+(BCBTMeta.template?"<a href="+mw.config.values.wgScriptPath+"/"+encodeURIComponent("模板:"+BCBTMeta.template)+" title="+"模板:"+BCBTMeta.template+" target=_blank>"+BCBTMeta.template+"</a>":"<span style='color:red'>请确认模板</span>")
for(let i=0,ilen=BCBTMeta.key.length;i<ilen;i++){
text+="\n|"+(BCBTMeta.key[i]?BCBTMeta.key[i]+"=":"")+BCBTMeta.page[key][i]
}
text+="\n}}"
let pre=document.createElement("pre")
pre.classList.add("col-md-3")
pre.dataset.title=key
pre.innerHTML=text
BCBTdisplay.appendChild(pre)
}
}
document.getElementById("BCBTsubmit").onclick=function(){
if(BCBTMeta.state=="ready"&&confirm("真的确认了吗?")){
document.getElementById("BCBTexcel").readOnly=true
BCBTMeta.state="busy";
BCBTMeta.titles = Object.keys(BCBTMeta.page)
create();
}
}
},
}
function create() {
var title = BCBTMeta.titles[BCBTMeta.index++]
if(!title) return false;
let text="{"+"{"+BCBTMeta.template
for(let i=0,ilen=BCBTMeta.key.length;i<ilen;i++){
text+="\n|"+(BCBTMeta.key[i]?BCBTMeta.key[i]+"=":"")+BCBTMeta.page[title][i]
}
text+="\n}}"
new mw.Api().postWithToken( 'csrf', {
action: 'edit',
title: title,
text: text
}).then(function (json) {
let title = json.edit.title
$.get(mw.config.get("wgCookiePath") + title)
document.querySelector("#BCBTdisplay pre[data-title=\""+title+"\"]").classList.add("created")
return setTimeout(create, 500)
}).catch(function (e) {
console.log(e)
});
}
window.addEventListener("load",function(){
BCBTFun.initialize()
})
function getApi(url,callback=false,callbackE=false){
let ajax=new XMLHttpRequest()
if(!callback){
ajax.open("GET",url,false)
ajax.send()
let json=JSON.parse(ajax.responseText)
return json
}
ajax.open("GET",url)
ajax.send()
ajax.onreadystatechange=function(){
if(ajax.readyState==4){
if(ajax.status==200){
callback(ajax.responseText)
}
else if(ajax.status==404&&callbackE){
callbackE(true)
}
}
}
}
function postFdApi(url,fd,callback=false,callbackE=false){
let ajax=new XMLHttpRequest()
if(!callback){
ajax.open("POST",url,false)
ajax.send(fd)
let json=JSON.parse(ajax.responseText)
return json
}
ajax.open("POST",url)
ajax.send(fd)
ajax.onreadystatechange=function(){
if(ajax.readyState==4){
if(ajax.status==200){
callback(ajax.responseText)
}
else if(ajax.status==404&&callbackE){
callbackE(true)
}
}
}
}
</script>
<style>
.created{
background:#5CB85C;
}
</style>
</div>
</includeonly><noinclude>
搬运自:https://wiki.biligame.com/qjnn/Widget:Pagefill<br>
<b><big>不能熟练使用模板的同学请不要使用此方法</big></b>
批量创建页面,在Excel里建表格复制进来
{|class="wikitable
|模板名||参数1名||参数2名||……
|-
|页面1名||参数1||参数2||……
|-
|页面2名||参数1||参数2||……
|-
|colspan=4|……
|}
{{#widget:pagefill}}
如页面已创建,请尝试使用[[讨论:批量添加页面内容]]
</noinclude>
362913bd3234a8ddfa9546f49a45e5cab59e155b
小麦
0
321
662
2021-12-22T12:30:53Z
13253902
7
创建页面,内容为“{{作物 |中文=小麦 |金币=0 |售价=1 |经验=1 |时间(天)= |时间(时)= |时间(分)=2 |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=小麦
|金币=0
|售价=1
|经验=1
|时间(天)=
|时间(时)=
|时间(分)=2
|时间(秒)=
}}
d27f8226b045bfd9ee9ae830850eaab88625b353
玉米
0
322
663
2021-12-22T12:31:45Z
13253902
7
创建页面,内容为“{{作物 |中文=玉米 |金币=1 |售价=3 |经验=1 |时间(天)= |时间(时)= |时间(分)=5 |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=玉米
|金币=1
|售价=3
|经验=1
|时间(天)=
|时间(时)=
|时间(分)=5
|时间(秒)=
}}
96acb533f9d1cb366ce7214a637cd72b16158203
胡萝卜
0
323
664
2021-12-22T12:31:46Z
13253902
7
创建页面,内容为“{{作物 |中文=胡萝卜 |金币=2 |售价=5 |经验=2 |时间(天)= |时间(时)= |时间(分)=10 |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=胡萝卜
|金币=2
|售价=5
|经验=2
|时间(天)=
|时间(时)=
|时间(分)=10
|时间(秒)=
}}
350d507d065b29ad7c5f31a9bf80d2ce180fc46a
甘蔗
0
324
665
2021-12-22T12:31:46Z
13253902
7
创建页面,内容为“{{作物 |中文=甘蔗 |金币=3 |售价=7 |经验=3 |时间(天)= |时间(时)= |时间(分)=20 |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=甘蔗
|金币=3
|售价=7
|经验=3
|时间(天)=
|时间(时)=
|时间(分)=20
|时间(秒)=
}}
b4c2fd6e6c9d08c08569da121035078204dd75ec
棉花
0
325
666
2021-12-22T12:31:47Z
13253902
7
创建页面,内容为“{{作物 |中文=棉花 |金币=4 |售价=9 |经验=4 |时间(天)= |时间(时)= |时间(分)=30 |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=棉花
|金币=4
|售价=9
|经验=4
|时间(天)=
|时间(时)=
|时间(分)=30
|时间(秒)=
}}
fd5fbd3fcc8eb7ab062972ae1b7ed58e13b3137a
草莓
0
326
667
2021-12-22T12:31:48Z
13253902
7
创建页面,内容为“{{作物 |中文=草莓 |金币=5 |售价=11 |经验=6 |时间(天)= |时间(时)=1 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=草莓
|金币=5
|售价=11
|经验=6
|时间(天)=
|时间(时)=1
|时间(分)=
|时间(秒)=
}}
db4200a26dc0e436a001da23b5ae735bba7b9e92
番茄
0
327
668
2021-12-22T12:31:49Z
13253902
7
创建页面,内容为“{{作物 |中文=西红柿 |金币=6 |售价=13 |经验=6 |时间(天)= |时间(时)=2 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=西红柿
|金币=6
|售价=13
|经验=6
|时间(天)=
|时间(时)=2
|时间(分)=
|时间(秒)=
}}
79c6b8023cefabb8418a48861c8c0cafed0033f5
686
668
2021-12-22T12:51:20Z
13253902
7
13253902移动页面[[西红柿]]至[[番茄]],不留重定向
wikitext
text/x-wiki
{{作物
|中文=西红柿
|金币=6
|售价=13
|经验=6
|时间(天)=
|时间(时)=2
|时间(分)=
|时间(秒)=
}}
79c6b8023cefabb8418a48861c8c0cafed0033f5
687
686
2021-12-22T12:51:29Z
13253902
7
wikitext
text/x-wiki
{{作物
|中文=番茄
|金币=6
|售价=13
|经验=6
|时间(天)=
|时间(时)=2
|时间(分)=
|时间(秒)=
}}
2245e72104bcdb3b9c618270086cfcf2dc22b890
松树
0
328
669
2021-12-22T12:31:50Z
13253902
7
创建页面,内容为“{{作物 |中文=松树 |金币=7 |售价=15 |经验=7 |时间(天)= |时间(时)=3 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=松树
|金币=7
|售价=15
|经验=7
|时间(天)=
|时间(时)=3
|时间(分)=
|时间(秒)=
}}
0a8fdde7c68466720536993fe382a87b64d2e00a
土豆
0
329
670
2021-12-22T12:31:51Z
13253902
7
创建页面,内容为“{{作物 |中文=土豆 |金币=8 |售价=17 |经验=8 |时间(天)= |时间(时)=4 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=土豆
|金币=8
|售价=17
|经验=8
|时间(天)=
|时间(时)=4
|时间(分)=
|时间(秒)=
}}
30228a7856dbacd4615abd0dc46e8ecd279721db
可可树
0
330
671
2021-12-22T12:31:52Z
13253902
7
创建页面,内容为“{{作物 |中文=可可树 |金币=9 |售价=19 |经验=19 |时间(天)= |时间(时)=8 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=可可树
|金币=9
|售价=19
|经验=19
|时间(天)=
|时间(时)=8
|时间(分)=
|时间(秒)=
}}
a1c72ab13c6407c0e1ab83dd847990e096eec089
橡胶树
0
331
672
2021-12-22T12:31:53Z
13253902
7
创建页面,内容为“{{作物 |中文=橡胶树 |金币=15 |售价=29 |经验=24 |时间(天)= |时间(时)=12 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=橡胶树
|金币=15
|售价=29
|经验=24
|时间(天)=
|时间(时)=12
|时间(分)=
|时间(秒)=
}}
68f533c6ca70fcf1e26af247036c9a21ad3d49a7
丝绸树
0
332
673
2021-12-22T12:31:54Z
13253902
7
创建页面,内容为“{{作物 |中文=丝绸树 |金币=20 |售价=33 |经验=27 |时间(天)= |时间(时)=15 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=丝绸树
|金币=20
|售价=33
|经验=27
|时间(天)=
|时间(时)=15
|时间(分)=
|时间(秒)=
}}
de5bfc3f84354bb4eda988165733c43abfbc1892
辣椒
0
333
674
2021-12-22T12:31:55Z
13253902
7
创建页面,内容为“{{作物 |中文=辣椒 |金币=11 |售价=20 |经验=9 |时间(天)= |时间(时)=5 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=辣椒
|金币=11
|售价=20
|经验=9
|时间(天)=
|时间(时)=5
|时间(分)=
|时间(秒)=
}}
e6c7618b11af4664dfcc54697809e74988d3b90a
水稻
0
334
675
2021-12-22T12:31:56Z
13253902
7
创建页面,内容为“{{作物 |中文=水稻 |金币=7 |售价=14 |经验=5 |时间(天)= |时间(时)=1 |时间(分)=20 |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=水稻
|金币=7
|售价=14
|经验=5
|时间(天)=
|时间(时)=1
|时间(分)=20
|时间(秒)=
}}
30280fec7ecab5876750169873026436beb752af
玫瑰
0
335
676
2021-12-22T12:31:57Z
13253902
7
创建页面,内容为“{{作物 |中文=玫瑰 |金币=18 |售价=28 |经验=10 |时间(天)= |时间(时)=2 |时间(分)=30 |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=玫瑰
|金币=18
|售价=28
|经验=10
|时间(天)=
|时间(时)=2
|时间(分)=30
|时间(秒)=
}}
53863963b5a784414243c39a3f731638ba445fea
茉莉
0
336
677
2021-12-22T12:31:58Z
13253902
7
创建页面,内容为“{{作物 |中文=茉莉 |金币=25 |售价=37 |经验=12 |时间(天)= |时间(时)=3 |时间(分)=30 |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=茉莉
|金币=25
|售价=37
|经验=12
|时间(天)=
|时间(时)=3
|时间(分)=30
|时间(秒)=
}}
3d20a8f3485e4c6a47d073fcf3bbd8a1432b539b
咖啡树
0
337
678
2021-12-22T12:31:59Z
13253902
7
创建页面,内容为“{{作物 |中文=咖啡 |金币=33 |售价=48 |经验=16 |时间(天)= |时间(时)=6 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=咖啡
|金币=33
|售价=48
|经验=16
|时间(天)=
|时间(时)=6
|时间(分)=
|时间(秒)=
}}
5285561840864b23710c8ddd1bc30062236f1b2a
684
678
2021-12-22T12:50:22Z
13253902
7
13253902移动页面[[咖啡]]至[[咖啡树]],不留重定向
wikitext
text/x-wiki
{{作物
|中文=咖啡
|金币=33
|售价=48
|经验=16
|时间(天)=
|时间(时)=6
|时间(分)=
|时间(秒)=
}}
5285561840864b23710c8ddd1bc30062236f1b2a
685
684
2021-12-22T12:50:33Z
13253902
7
wikitext
text/x-wiki
{{作物
|中文=咖啡树
|金币=33
|售价=48
|经验=16
|时间(天)=
|时间(时)=6
|时间(分)=
|时间(秒)=
}}
8f8197258c36cc29072beb777e59f9e8ee52b490
花生植物
0
338
679
2021-12-22T12:32:00Z
13253902
7
创建页面,内容为“{{作物 |中文=花生植物 |金币=35 |售价=53 |经验=10 |时间(天)= |时间(时)=7 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=花生植物
|金币=35
|售价=53
|经验=10
|时间(天)=
|时间(时)=7
|时间(分)=
|时间(秒)=
}}
3367191cbe8931d8cca0147b3287c919c78a26a6
茶树
0
339
680
2021-12-22T12:32:01Z
13253902
7
创建页面,内容为“{{作物 |中文=茶树 |金币=37 |售价=61 |经验=21 |时间(天)= |时间(时)=9 |时间(分)= |时间(秒)= }}”
wikitext
text/x-wiki
{{作物
|中文=茶树
|金币=37
|售价=61
|经验=21
|时间(天)=
|时间(时)=9
|时间(分)=
|时间(秒)=
}}
a6412490afdff1961bad4535ff62d02f8f72cb65
模板:作物表
10
340
682
2021-12-22T12:41:15Z
13253902
7
创建页面,内容为“<noinclude> {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 作物 ! 所需金币 ! 获得经验 ! 成熟时间 {{#ask:分类:作…”
wikitext
text/x-wiki
<noinclude>
{| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;"
! 作物
! 所需金币
! 获得经验
! 成熟时间
{{#ask:[[分类:作物]]
|?中文
|?金币
|?经验
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|link=none
|sort=金币
|order=asc
|headers=hide
|template=作物表
|format=template
|limit=1000
}}
|}
</noinclude><includeonly>|-
|[[文件:{{{2|}}}.png|80px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]]
| style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{3|}}}
| style="font-size:2vw;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{4|}}}
| style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{5|}}}|{{{5|}}}天}}{{#if:{{{6|}}}|{{{6|}}}时}}{{#if:{{{7|}}}|{{{7|}}}分}}{{#if:{{{8|}}}|{{{8|}}}秒}}
</includeonly>
17f164e6805b65fc3f6028535046ec2bfa620776
作物
0
341
683
2021-12-22T12:41:52Z
13253902
7
创建页面,内容为“{{面包屑}} {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 作物 ! 所需金币 ! 获得经验 ! 成熟时间 {{#ask:分类:作…”
wikitext
text/x-wiki
{{面包屑}}
{| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;"
! 作物
! 所需金币
! 获得经验
! 成熟时间
{{#ask:[[分类:作物]]
|?中文
|?金币
|?经验
|?时间(天)
|?时间(时)
|?时间(分)
|?时间(秒)
|link=none
|sort=金币
|order=asc
|headers=hide
|template=作物表
|format=template
|limit=1000
}}
|}
757d4467a9db63801d0526385307fbc3698a53e3
MediaWiki:Sidebar
8
14
688
19
2021-12-22T12:53:30Z
13253902
7
wikitext
text/x-wiki
* 首页
** 首页|梦想小镇WIKI首页
** recentchanges-url|recentchanges
** randompage-url|randompage
** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI首页
* 建造
** 房屋|房屋
** 社区建筑|社区建筑
** 工厂|工厂
** 动物园|动物园
** 装饰物|装饰物
** 特殊|特殊
* 物品
** 作物|作物
** 产品|产品
* 统计
** 工厂升级金属表|工厂升级金属表
** 扩地所需材料表|扩地所需材料表
* 其他
** 常用编辑|常用编辑
eb87fa157552dc64972ded7039f89d09ad0aa673
测试
0
286
689
561
2022-01-01T06:39:10Z
13253902
7
wikitext
text/x-wiki
{{#widget:Test}}
<div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div>
<a>获取内容</a>
{{#set:
|开始日期=20220101
}}
ce9a75642c7e699877e5f909e294180d2639878e
属性:开始日期
102
342
690
2022-01-01T06:39:57Z
13253902
7
创建页面,内容为“[[Has type::Date]]”
wikitext
text/x-wiki
[[Has type::Date]]
8a74b186b0e70da40f6a9a21198f77c0a08ebe2e
工厂
0
343
691
2022-01-24T02:51:06Z
1793443439
317
创建页面,内容为“123”
wikitext
text/x-wiki
123
40bd001563085fc35165329ea1ff5c5ecbdbbeef
692
691
2022-01-24T02:51:46Z
1793443439
317
清空页面
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Widget:Test
274
285
693
564
2022-03-12T07:23:40Z
13253902
7
wikitext
text/x-wiki
<includeonly>
{{#arraydefine: Housename | {{#ask:[[分类:房屋]]|link=none}} | | }}
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
let Housename = {{#arrayprint:Housename}};
document.write(Housename + "<br>");
</script>
</includeonly>
a495bbb65745de2242b9491405cf5ee504df0151
694
693
2022-03-12T07:24:22Z
13253902
7
wikitext
text/x-wiki
{{#arraydefine: Housename | {{#ask:[[分类:房屋]]|link=none}} | | }}
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
let Housename = {{#arrayprint:Housename}};
document.write(Housename + "<br>");
</script>
16235dbbb64cebc8d4aee52c7b39ec3e8dc1df3e
695
694
2022-03-12T07:29:58Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
let Housename = <!--{$Housename}-->;
document.write(Housename + "<br>");
</script>
dd8d5b9c05c9ffcc5df25d26496f7f52facd792b
696
695
2022-03-12T07:31:51Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
let Housename = '<!--{$Housename}-->';
document.write(Housename + "<br>");
</script>
cd42589fb39b16eb93eee0bba329e7fffa63b9a8
697
696
2022-03-12T07:32:10Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
let Housename = 'XXX';
document.write(Housename + "<br>");
</script>
1ca0f32a5635e9d42f94b04b5139dc99e7a1e252
698
697
2022-03-12T07:33:38Z
13253902
7
wikitext
text/x-wiki
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){
$("#bad").load("/township/Test" #good);
});
});
var xyz=["小屋","小麦","小屁孩"];
document.write(xyz[1] + "<br>");
</script>
c2a41e47eb2afb247a6e934712155dd389e8fc32
699
698
2022-03-12T07:35:24Z
13253902
7
wikitext
text/x-wiki
<script>
var xyz=["小屋","小麦","小屁孩"];
document.write(xyz[1] + "<br>");
</script>
16493f4457871e0045ad1684f810c125f8b149a1
700
699
2022-03-12T07:38:59Z
13253902
7
wikitext
text/x-wiki
<script>
var xyz = <!--{$xyz}-->;
document.write(xyz + "<br>");
</script>
d82b90fba31697fcdf26e49f19f1196d944c343b
701
700
2022-03-12T07:42:36Z
13253902
7
wikitext
text/x-wiki
<script>
var xyz = <!--{$xyz}-->;
document.write(xyz[1] + "<br>");
</script>
55f9115841b7741769336027f29344c267342ff9
smw/schema:Group:Schema properties
112
344
702
2022-03-14T16:25:32Z
System
361
Semantic MediaWiki group import
smw/schema
application/json
{
"type": "PROPERTY_GROUP_SCHEMA",
"groups": {
"schema_group": {
"canonical_name": "Schema properties",
"message_key": "smw-property-group-label-schema-group",
"property_keys": [
"_SCHEMA_TYPE",
"_SCHEMA_DEF",
"_SCHEMA_DESC",
"_SCHEMA_TAG",
"_SCHEMA_LINK",
"_FORMAT_SCHEMA",
"_CONSTRAINT_SCHEMA",
"_PROFILE_SCHEMA"
]
}
},
"tags": [
"group",
"property group"
]
}
fdba38d9db40d0248af036f81b4b7fdb74f6170d
smw/schema:Group:Predefined properties
112
345
703
2022-03-14T16:25:32Z
System
361
Semantic MediaWiki group import
smw/schema
application/json
{
"type": "PROPERTY_GROUP_SCHEMA",
"groups": {
"administrative_group": {
"canonical_name": "Adminstrative properties",
"message_key": "smw-property-group-label-administrative-properties",
"property_keys": [
"_MDAT",
"_CDAT",
"_NEWP",
"_LEDT",
"_DTITLE",
"_CHGPRO",
"_EDIP",
"_ERRC"
]
},
"classification_group": {
"canonical_name": "Classification properties",
"message_key": "smw-property-group-label-classification-properties",
"property_keys": [
"_INST",
"_PPGR",
"_SUBP",
"_SUBC"
]
},
"content_group": {
"canonical_name": "Content properties",
"message_key": "smw-property-group-label-content-properties",
"property_keys": [
"_SOBJ",
"_ASK",
"_MEDIA",
"_MIME",
"_ATTCH_LINK",
"_FILE_ATTCH",
"_CONT_TYPE",
"_CONT_AUTHOR",
"_CONT_LEN",
"_CONT_LANG",
"_CONT_TITLE",
"_CONT_DATE",
"_CONT_KEYW",
"_TRANS",
"_TRANS_SOURCE",
"_TRANS_GROUP"
]
},
"declarative_group": {
"canonical_name": "Declarative properties",
"message_key": "smw-property-group-label-declarative-properties",
"property_keys": [
"_TYPE",
"_UNIT",
"_IMPO",
"_CONV",
"_SERV",
"_PVAL",
"_LIST",
"_PREC",
"_PDESC",
"_PPLB",
"_PVAP",
"_PVALI",
"_PVUC",
"_PEID",
"_PEFU"
]
}
},
"tags": [
"group",
"property group"
]
}
8536eb8767d6dc5a87a0b4f7791b9cd791acbd75
测试
0
286
704
689
2022-05-13T11:11:31Z
13253902
7
wikitext
text/x-wiki
{{#widget:Test}}
<div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div>
<a>获取内容</a>
{{#set:
|开始日期=20220101
}}
{{#set:
|测试属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
}}
6b759eaba2663f8c29a5f2a576960dfa188bc5c2
709
704
2022-05-13T11:44:56Z
13253902
7
wikitext
text/x-wiki
{{#widget:Test}}
<div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div>
<a>获取内容</a>
{{#set:
|开始日期=20220101
}}
{{#set:
|测试属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
|页面型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
|文本型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
}}
d2ac7fef188c59e46c4b8e741b7c7d256720ca6a
711
709
2022-05-20T04:35:19Z
13253902
7
wikitext
text/x-wiki
{{#widget:Test}}
<div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div>
<a>获取内容</a>
{{#set:
|开始日期=20220101
}}
{{#set:
|测试属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
|页面型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
|文本型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
}}
{{#Widget:测试}}
df8f69dafb6c1d5b2563f1ef41d26a46a5c1ae98
718
711
2022-05-20T07:16:31Z
13253902
7
wikitext
text/x-wiki
{{#widget:Test}}
<div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div>
<a>获取内容</a>
{{#set:
|开始日期=20220101
}}
{{#set:
|测试属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
|页面型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
|文本型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/
}}
<div class="tooltips">弹窗</div>
{{#Widget:测试}}
52b34c2d9b0c129a70b58aadf93f94cd98352f53
753
718
2022-05-21T15:24:12Z
1381806
391
wikitext
text/x-wiki
<div class="bili-tt" data-type="@测试" data-name="1|2|42">tts</div>
b268bf93ff005a6243f9b2530b69f54a627929c9
属性:测试属性
102
346
705
2022-05-13T11:13:46Z
13253902
7
已创建类型页面型的属性
wikitext
text/x-wiki
这是类型为[[具有类型::页面型]]的属性。
6d5b652dac9e361f52d578d4bb3e4a81c245050c
706
705
2022-05-13T11:39:06Z
13253902
7
清空全部内容
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
属性:页面型属性
102
347
707
2022-05-13T11:43:42Z
13253902
7
已创建类型页面型的属性
wikitext
text/x-wiki
这是类型为[[具有类型::页面型]]的属性。
6d5b652dac9e361f52d578d4bb3e4a81c245050c
属性:文本型属性
102
348
708
2022-05-13T11:44:04Z
13253902
7
已创建类型文本型的属性
wikitext
text/x-wiki
这是类型为[[具有类型::文本型]]的属性。
8d6761d8faf9d54ecd13d1fc894091df46d2cd04
Widget:测试
274
290
710
625
2022-05-20T04:34:52Z
13253902
7
创建页面
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<button id="myButton" data-tippy-content="Another T<br>ooltip">My button</button>
<style>
.tippy-box{background-color:transparent;
</style>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
tippy('#myButton',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
});
</script>
0033cb7aabe60d55af7ba95fe9b20dfc5caed9c6
713
710
2022-05-20T04:40:04Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<button id="myButton" data-tippy-content="{{测试|11|33|22}}">My button</button>
<style>
.tippy-box{background-color:transparent;
</style>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
tippy('#myButton',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
});
</script>
32e5ff8f1779204b4c2de57cb82dcd14cc1b745a
714
713
2022-05-20T05:18:05Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<style>
.tippy-box{background-color:transparent;
</style>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
tippy('.tooltip',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
});
</script>
f6936d6c29d03a853d2ab2975ebf373da8a89653
715
714
2022-05-20T05:21:00Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<style>
.tippy-box{background-color:transparent;
</style>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
});
</script>
2e99f5d9cf28246a04d71eb1daa065f70c40b44a
716
715
2022-05-20T06:01:21Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
onShow(instance) {
return $.get('/yanyu/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "小麦", // 待解析文本
}).then(function(result){
if (result && result.parse && result.parse.text){
$div.html(result.parse.text['*']);
}
else{
throw result;
}
})['catch'](function(error){ // 辣鸡解析器,不让我直接.catch
if(again){
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else{
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
},
});</script>
b4fbe55bdf815dccb6f40254f7b050c3a63e9102
717
716
2022-05-20T07:16:05Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
onShow(instance) {
return $.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "小麦", // 待解析文本
}).then(function(result){
if (result && result.parse && result.parse.text){
$div.html(result.parse.text['*']);
}
else{
throw result;
}
})['catch'](function(error){ // 辣鸡解析器,不让我直接.catch
if(again){
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else{
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
},
});</script>
3e34babb8896aeaff596ed3994d9be6e326e186a
721
717
2022-05-21T04:59:10Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
function(tooltips_data,status){
return(tooltips_data.parse.text['*']);
}
);;
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: tooltips_data,
});
</script>
cd5118a7fd245ad5e6f87b8b7f278ba4274275db
722
721
2022-05-21T05:02:30Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
function(tooltips_result,status){
return(tooltips_result.parse.text['*']);
}
);;
var tooltips_wikitext=tooltips_wikitext.parse.text['*'];
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: tooltips_wikitext,
});
</script>
07f60f75aede92f928087c47c05459d692543c08
723
722
2022-05-21T05:06:42Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
function(tooltips_data,status){
return(tooltips_data.parse.text['*']);
}
);;
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: tooltips_data.parse.text['*'],
});
</script>
cd531382c0c7f20858d72a97a49fe6de5fd4fe75
724
723
2022-05-21T05:08:17Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
function(tooltips_data,status){
return(tooltips_data.parse.text['*']);
}
);;
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: JSON.parse(tooltips_data.parse.text['*']),
});
</script>
3c14da4cfa6022e3c63fbecc41097866baba5616
725
724
2022-05-21T05:09:24Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
function(tooltips_data,status){
return(tooltips_data.parse.text['*']);
}
);;
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: tooltips_data,
});
</script>
cd5118a7fd245ad5e6f87b8b7f278ba4274275db
726
725
2022-05-21T05:13:00Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);;
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: tooltips_data,
});
</script>
767d392d19c65803bd88c504d8691293cd2591a3
727
726
2022-05-21T05:15:32Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);;
var tooltips_result = tooltips_data.parse.text['*'];
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: tooltips_result,
});
</script>
fe36820f5c67b31395e9925e2a0352eda7cd45ad
728
727
2022-05-21T05:22:24Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);;
var tooltips_result = html(tooltips_data.parse.text['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: tooltips_result,
});
</script>
ceadb19d5ec91689d5c70cd520cb2df4e46e8a9c
729
728
2022-05-21T05:31:08Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);;
var tooltips_result = tooltips_data.parse.text['*'];
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: tooltips_result,
});
</script>
fe36820f5c67b31395e9925e2a0352eda7cd45ad
730
729
2022-05-21T05:48:17Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);;
var tooltips_result = JSON.stringify(tooltips_data.responseJSON.parse.text['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: tooltips_result,
});
</script>
7463c21c50e12a4ee67d435f71e3292b53c67083
731
730
2022-05-21T05:51:53Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);;
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: JSON.stringify(tooltips_data.responseJSON.parse.text['*']),
});
</script>
b1245065a077edbd542cb4bb47afb3496dd06db5
732
731
2022-05-21T06:02:04Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);;
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:JSON.stringify(tooltips_data.responseJSON.parse.text['*']),
});
</script>
db346c957e269cec26fac9129c3656dad0a9cd84
733
732
2022-05-21T06:02:54Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);;
var x =JSON.stringify(tooltips_data.responseJSON.parse.text['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
019ce76c8a3a697b1143bfba7a31ddbbd71522f0
734
733
2022-05-21T06:14:44Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);
var x =JSON.stringify(tooltips_data.responseJSON.parse.text['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
9ebcb7a7a0ac34e4beaac8bf1477093e718c7dd2
735
734
2022-05-21T06:17:21Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
// With the above scripts loaded, you can call `tippy()` with a CSS
// selector and a `content` prop:
var x =JSON.stringify(tooltips_data.responseJSON.parse.text['*']);
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
},
);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
fdd99ef3d4c108a2124b033e49333103184c7b76
736
735
2022-05-21T06:18:21Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:JSON.stringify(tooltips_data.responseJSON.parse.text['*']),
});
</script>
3ca6fd134c6f0ad150bff92157db27013d31d9ae
737
736
2022-05-21T06:19:19Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*'];
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x),
});
</script>
2751b43c2ceb26ee4cef62f878694028b44adce5
738
737
2022-05-21T06:22:32Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x),
});
</script>
f0a6304e3d28eee932b5575fbe17ebeb049ca2d4
739
738
2022-05-21T06:25:03Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
cd4480fd68e84649cff6ca6de93bc8e8bd363f1e
740
739
2022-05-21T06:32:02Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x=225;
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
e26a477b2e4a04ff1d3ec1ab17f3dc5c8ae15cd3
741
740
2022-05-21T06:34:23Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=JSON.parse($.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
}));
var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
5fbf42086f2de4f4637b0e6524f2bb3e80163e34
742
741
2022-05-21T06:35:14Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
cd4480fd68e84649cff6ca6de93bc8e8bd363f1e
743
742
2022-05-21T07:41:27Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x=2333);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
a36c216d6c1499d6bd36329d142892b7653852d4
744
743
2022-05-21T07:41:34Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x=2333;
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
828c15bce855f432d9c6048bd55c347ad7e053cb
745
744
2022-05-21T07:42:18Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x= "2333";
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
dd631c1e622af916e3e76eb798afd4230cee60de
746
745
2022-05-21T07:44:27Z
13253902
7
wikitext
text/x-wiki
<style>
.tippy-box[data-theme~=light] {
color: #26323d;
box-shadow: 0 0 20px 4px rgba(154, 161, 177, .15), 0 4px 80px -8px rgba(36, 40, 47, .25), 0 4px 4px -2px rgba(91, 94, 105, .15);
background-color: #fff
}
.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before {
border-top-color: #fff
}
.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before {
border-bottom-color: #fff
}
.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before {
border-left-color: #fff
}
.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before {
border-right-color: #fff
}
.tippy-box[data-theme~=light]>.tippy-backdrop {
background-color: #fff
}
.tippy-box[data-theme~=light]>.tippy-svg-arrow {
fill: #fff
}
</style>
<script>/**
* @popperjs/core v2.11.5 - MIT License
*/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
</script>
<script>
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
</script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x= "2333";
tippy('.tooltips', {
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: '这是弹窗内容',
});
</script>
c33bd506211e30eadc72777ed3e4c422b11041b1
747
746
2022-05-21T07:45:14Z
13253902
7
wikitext
text/x-wiki
<style>
.tippy-box[data-theme~=light] {
color: #26323d;
box-shadow: 0 0 20px 4px rgba(154, 161, 177, .15), 0 4px 80px -8px rgba(36, 40, 47, .25), 0 4px 4px -2px rgba(91, 94, 105, .15);
background-color: #fff
}
.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before {
border-top-color: #fff
}
.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before {
border-bottom-color: #fff
}
.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before {
border-left-color: #fff
}
.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before {
border-right-color: #fff
}
.tippy-box[data-theme~=light]>.tippy-backdrop {
background-color: #fff
}
.tippy-box[data-theme~=light]>.tippy-svg-arrow {
fill: #fff
}
</style>
<script>
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
</script>
<script>
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
</script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x= "2333";
tippy('.tooltips', {
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content: '这是弹窗内容',
});
</script>
fc1314513542248f091d2ea1998e14076834848f
748
747
2022-05-21T07:46:19Z
13253902
7
页面内容被替换为“<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext"…”
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
});
var x= "2333";
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:x,
});
</script>
dd631c1e622af916e3e76eb798afd4230cee60de
749
748
2022-05-21T07:56:09Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
var tooltips_data=$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
}).done(data=>tooltips_data=data['parse']['text']['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:tooltips_data,
});
</script>
2320e72075b453522ee188ad10b5cfba63c0fd8e
750
749
2022-05-21T08:00:45Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
}).done(data=>tooltips_data=data['parse']['text']['*']);
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:tooltips_data,
});
</script>
65455ca2ec2c2b44cd482ed39f85ccdf7a562670
751
750
2022-05-21T08:08:54Z
13253902
7
wikitext
text/x-wiki
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
$.get('/township/api.php',{
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
text: "{{测试|11|22|33}}", // 待解析文本
}).done(data=>{tooltips_data=data['parse']['text']['*'];
tippy('.tooltips',{
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: true,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
content:tooltips_data,
});});
</script>
1a9e1b2ff820ab9e0819b5c25de92dafeb331908
模板:测试
10
349
712
2022-05-20T04:39:36Z
13253902
7
创建页面,内容为“<noinclude>{{测试|11|22|33}}</noinclude><includeonly>{{{1|}}}<b>{{{2|}}}</b><font color=red>{{{3|}}}</font></includeonly>”
wikitext
text/x-wiki
<noinclude>{{测试|11|22|33}}</noinclude><includeonly>{{{1|}}}<b>{{{2|}}}</b><font color=red>{{{3|}}}</font></includeonly>
8ca87dbe3a07dba8e392c23030ed0e9ae6a19025
杂货铺
0
35
719
320
2022-05-20T16:38:01Z
291349077
390
wikitext
text/x-wiki
{{社区建筑
|中文=杂货铺
|等级=12222
|金币=25
|人口=15
|经验=30
|现金=1
|占地=2×2
|玻璃=
|砖块=1
|混凝土路面=
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=2
|时间(秒)=
}}
becc4760c18342614ec223d298386918469339ad
720
719
2022-05-21T02:03:03Z
13253902
7
已还原[[Special:Contributions/291349077|291349077]]([[User talk:291349077|讨论]])的编辑至最后由[[User:13253902|13253902]]修订的版本
wikitext
text/x-wiki
{{社区建筑
|中文=杂货铺
|等级=5
|金币=25
|人口=15
|经验=30
|现金=1
|占地=2×2
|玻璃=
|砖块=1
|混凝土路面=
|钻头=
|电锯=
|电钻=
|时间(天)=
|时间(时)=
|时间(分)=2
|时间(秒)=
}}
81faef2b8f9d106fc55ee3470c9f8a768dddc003
MediaWiki:Gadget-tippy.js
8
350
752
2022-05-21T15:20:34Z
1381806
391
测试
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(() => {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
{
/**
* @popperjs/core v2.11.5 - MIT License
*/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
}
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var SMALL_SCREEN = window.innerWidth < 768;
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
onShow(instance) {
get_div(link, instance);
}
})
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, (div) => instance.setContent(div));
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/tdj/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
0c0dc86154ac60e00246f989ccd2c3b277377351
测试
0
286
754
753
2022-05-21T15:25:15Z
1381806
391
wikitext
text/x-wiki
<div class="bili-tippy" data-type="@测试" data-name="1|2|42">tts</div>
f9c0e58f175f08d22f9af2a2c874a3075dbf15d7
760
754
2022-05-21T18:24:29Z
1381806
391
wikitext
text/x-wiki
<div class="bili-tippy" data-type="@测试" data-name="1|2|42">tts</div>
{{测试|1|2|42}}
{{#css:
.tippy-box[data-theme~=light] {
color: #26323d;
box-shadow: 0 0 20px 4px rgba(154, 161, 177, .15), 0 4px 80px -8px rgba(36, 40, 47, .25), 0 4px 4px -2px rgba(91, 94, 105, .15);
background-color: #fff
}
}}
8a7442ef7a3bd5dda4523a4f0cc08b29720ebd08
MediaWiki:Gadgets-definition
8
56
755
576
2022-05-21T15:34:20Z
1381806
391
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
* Tippy [ResourceLoader|default] | Tippy.js
4e6c888c8dae1ef9a26d61beb3acc4a7b87322a8
756
755
2022-05-21T15:35:11Z
1381806
391
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
* Tippy [ResourceLoader|default] | tippy.js
dc9c7e4bc1f04616be3c83bc6ed9c0da912d1a1f
757
756
2022-05-21T15:40:45Z
1381806
391
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
* tippy [ResourceLoader|default] | tippy.js
23e33f6d30d09912405258abc4c22049c09119e7
761
757
2022-05-21T18:25:15Z
1381806
391
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
* tippy[ResourceLoader|default]|tippy.js
af865f241dad8cfc25218d9129ee9d7d86fe2d26
770
761
2022-05-22T05:38:01Z
1381806
391
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
<!-- * tippy[ResourceLoader|default]|tippy.js -->
d79ac37f817069ec3382288e02d6062f78af1830
786
770
2023-04-22T07:13:05Z
13253902
7
内容扩充
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
* Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
<!-- * tippy[ResourceLoader|default]|tippy.js -->
344fb36ccae2c4abd53b96d1d511e641728509a7
791
786
2023-04-23T11:14:37Z
13253902
7
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
* Wikiplus[ResourceLoader|rights=edit]|Wikiplus.js
* Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
<!-- * tippy[ResourceLoader|default]|tippy.js -->
861c57c3a9518a2923fdd44867713d1acb8c9d95
805
791
2023-04-23T12:11:03Z
13253902
7
// Edit via Wikiplus
wikitext
text/x-wiki
==编辑==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
* SmartClick[ResourceLoader|rights=edit]|SmartClick.js
* Wikiplus[ResourceLoader|rights=edit]|Wikiplus.js
* Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js
==用户==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==系统==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
<!-- * tippy[ResourceLoader|default]|tippy.js -->
70ee2103073b80fa29493e481f3bf51533105242
809
805
2023-04-23T12:18:01Z
13253902
7
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
* SmartClick[ResourceLoader|rights=edit]|SmartClick.js
* Wikiplus[ResourceLoader|rights=edit]|Wikiplus.js
* Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
<!-- * tippy[ResourceLoader|default]|tippy.js -->
241b3eb80abef12af8413e884843e74c4faaedfa
MediaWiki:Gadget-tippy.js
8
350
758
752
2022-05-21T15:50:49Z
1381806
391
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(() => {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
console.log("OK");
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
{
/**
* @popperjs/core v2.11.5 - MIT License
*/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
}
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var SMALL_SCREEN = window.innerWidth < 768;
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: 'toggle',
onShow(instance) {
get_div(link, instance);
}
});
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, (div) => instance.setContent(div));
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/tdj/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
fa69970645ac15ab439f2c996be447cc09bf1e39
759
758
2022-05-21T18:21:49Z
1381806
391
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(() => {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
{
/**
* @popperjs/core v2.11.5 - MIT License
*/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
}
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var SMALL_SCREEN = window.innerWidth < 768;
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: true,
inlinePositioning: true,
maxWidth: 'none',
onShow(instance) {
get_div($(link), instance);
}
})
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, ($div) => instance.setContent($div[0]));
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/tdj/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
f47757eb7e5965c53636ad7bae7106b764986552
762
759
2022-05-21T18:35:10Z
1381806
391
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(function () {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
{
/**
* @popperjs/core v2.11.5 - MIT License
*/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
}
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var SMALL_SCREEN = window.innerWidth < 768;
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: true,
inlinePositioning: true,
maxWidth: 'none',
onShow(instance) {
get_div($(link), instance);
}
})
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, function($div){instance.setContent($div[0]);});
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/tdj/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
dce4b73634b87cfbab8a5c84ede40df5bdd98004
763
762
2022-05-21T18:37:08Z
1381806
391
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(function () {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
{
/**
* @popperjs/core v2.11.5 - MIT License
*/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
}
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var SMALL_SCREEN = window.innerWidth < 768;
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: true,
inlinePositioning: true,
maxWidth: 'none',
onShow(instance) {
get_div($(link), instance);
}
})
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, function($div){instance.setContent($div[0]);});
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/tdj/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
d8a03bda670fb313b6877432d618abf27fe80f49
764
763
2022-05-21T18:37:59Z
1381806
391
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(function () {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
{
/**
* @popperjs/core v2.11.5 - MIT License
*/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
}
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var SMALL_SCREEN = window.innerWidth < 768;
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: true,
inlinePositioning: true,
maxWidth: 'none',
onShow(instance) {
get_div($(link), instance);
}
})
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, function($div){instance.setContent($div[0]);});
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/tdj/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
a185b7d6a9b2caa605462ab0dabc23054c08c6e5
765
764
2022-05-21T18:54:43Z
1381806
391
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(function () {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
{
/**
* @popperjs/core v2.11.5 - MIT License
*/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
}
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: true,
inlinePositioning: true,
maxWidth: 'none',
onShow: function(instance) {
get_div($(link), instance);
}
})
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, function($div){instance.setContent($div[0]);});
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/tdj/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
663eaa552fb078c3b3e3366b7f4584d9268358ce
766
765
2022-05-21T19:04:57Z
1381806
391
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(function () {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
{
/**
* @popperjs/core v2.11.5 - MIT License
*/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));
//# sourceMappingURL=popper.min.js.map
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));
//# sourceMappingURL=tippy-bundle.umd.min.js.map
}
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: true,
inlinePositioning: true,
maxWidth: 'none',
onShow: function(instance) {
get_div($(link), instance);
}
});
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, function($div){instance.setContent($div[0]);});
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/township/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
5990c48f6cb4f33186f6ae194af61a84843e7d99
773
766
2022-05-23T09:32:02Z
1381806
391
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(function () {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
{
/**
* @popperjs/core v2.11.5 - MIT License
*/
$(!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })););
//# sourceMappingURL=popper.min.js.map
$(!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })););
//# sourceMappingURL=tippy-bundle.umd.min.js.map
}
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: true,
inlinePositioning: true,
maxWidth: 'none',
onShow: function(instance) {
get_div($(link), instance);
}
});
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, function($div){instance.setContent($div[0]);});
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/township/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
2d8260340532c4c874e9e027a7f7936c9e33a6a4
774
773
2022-05-23T09:45:37Z
1381806
391
javascript
text/javascript
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
$(function () {
if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return;
var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block';
if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */
$.getScript("index.php?title=用户:1381806/script/popper.js&action=raw&ctype=text/javascript", () => $.getScript("index.php?title=用户:1381806/script/tippy.js&action=raw&ctype=text/javascript", () => {
var TOOLTIP_CACHE_BLOCK = $();
var Link_CLASS_NAME = 'bili-tippy';
var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度
var actions = {};
actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a>
var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除
if (!inner_link) return block;
var link = document.createElement('a');
link.setAttribute('href', inner_link.getAttribute('href'));
if (inner_link.innerHTML.trim() !== "") {
var span = document.createElement('span');
span.innerHTML = inner_link.innerHTML;
inner_link.parentElement.insertBefore(span, inner_link);
}
inner_link.remove();
var attrs = block.attributes;
for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性
var attr = attrs[i];
block.removeAttributeNode(attr);
link.setAttributeNode(attr);
}
link.innerHTML = block.innerHTML;
block.parentElement.insertBefore(link, block); // 取代位置
block.remove();
return link;
};
actions.tippy = function (link) {
tippy(link, {
content: '加载中…',
theme: 'light',
allowHTML: true,
arrow: false,
followCursor: false,
interactive: true,
trigger: "click",
hideOnClick: true,
inlinePositioning: true,
maxWidth: 'none',
onShow(instance) {
get_div($(link), instance);
}
});
};
actions.init = function (range) {
// 添加缓存浮层的区域
if (TOOLTIP_CACHE_BLOCK.length === 0) {
$("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>');
TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID);
}
// 为所有浮层添加事件
$(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () {
actions.tippy(actions.replace(this));
});
};
actions.init(document.getElementById('mw-content-text'));
// 监听dom变动,为新插入的tt注册事件
new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (mutation) {
if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init);
});
}).observe(document.getElementById('mw-content-text'), {
childList: true, // 监视节点增删事件
subtree: true // 包含所有后代节点(而不只是子节点)
});
function get_div($link, instance) {
var tt_type = get_data($link, 'type');
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $(document.getElementById(get_div_id(tt_type, tt_name)));
if ($div.length === 0) {
$div = new_div($link, function ($div) { instance.setContent($div[0]); });
}
return $div;
}
function get_div_id(type, name) {
return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_');
}
function get_data($node, name) {
return $node.attr("data-" + name) || "";
}
// 生成浮层
function new_div($link, callback) {
callback = callback || function () { };
var tt_type = get_data($link, 'type');
if (tt_type === 'child') {
$link.attr('data-name', Math.random().toString().replace('0.', ''));
}
var tt_name = get_data($link, 'name').replace(' ', '_');
var $div = $('<div></div>');
$div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache');
// 可以为每种type的浮层,写不同的占位文本
// 如果浮层内容简单,也可以直接将其内容使用js生成
switch (tt_type) {
// 可以写多种类型
// ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码
// case 'test':
// ...
// break;
case 'raw':
$div.text(tt_name);
break;
case 'child':
$link.children('.tt-child').show().appendTo($div);
break;
}
$div.appendTo(TOOLTIP_CACHE_BLOCK);
// 异步读取模板解析结果
// 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置
var wikitext = '';
switch (tt_type.slice(0, 1)) {
case '@': // 模板
var template_name = tt_type.slice(1);
wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name
break;
case '$': // 模块
var module_name = tt_type.slice(1);
wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name
break;
default:
switch (tt_type) {
case 'test':
wikitext = '{{#if:1|test|' + tt_name + '}}';
break;
case 'wikitext':
wikitext = tt_name;
break;
}
}
if (wikitext) {
$div.text('加载中...');
load_wikitext(wikitext, $div).then(callback);
}
else {
callback();
}
return $div;
}
// 根据wikitext生成浮层内容
function load_wikitext(wikitext, $div, again) {
// 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse
return $.get('/township/api.php', {
action: "parse", // 解析
format: "json", // 返回内容的格式
disablelimitreport: true, // 不返回使用内存、时间信息
prop: "text", // 返回解析后的文本
contentmodel: "wikitext", // 内容模型
smaxage: CACHE_TIME,
maxage: CACHE_TIME,
text: wikitext, // 待解析文本
_: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存
}).then(function (result) {
if (result && result.parse && result.parse.text) {
$div.html(result.parse.text['*']);
return $div;
}
else {
throw result;
}
})['catch'](function (error) { // 辣鸡解析器,不让我直接.catch
if (again) {
$div.text('读取失败');
console.log('获取"' + wikitext + '"失败', error);
}
else {
$div.text('再次尝试...');
return load_wikitext(wikitext, $div, true);
}
});
}
}))
})
/* <nowiki> ← 避免被归类为有脚本错误的页面*/
e677a96379f97186d281fac2cf517bf0c3eb7031
MediaWiki:Common.js
8
33
767
554
2022-05-22T04:33:16Z
1381806
391
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
/* 来源:碧蓝航线WIKI*/
$('.resourceLoader').each(function () {
var $x = $(this);
var text = $.trim($x.text());
if (!text) return;
//加载模块
if ($x.data('isModule') === true)
return mw.loader.load(text);
//自动补充MediaWiki命名空间
var ns = text.match('^.*?:');
if (!ns) text = 'MediaWiki:' + text;
//加载CSS样式表
var mime = ($x.data('mime') || "text/javascript").toLowerCase();
if (mime == "text/css") {
if (text.slice(-4).toLowerCase() !== '.css') text = text + '.css';
//if ($x.data('debug') !== true) text = text + '&debug=false';
return mw.loader.load("//wiki.biligame.com/township/index.php?title=" + text + "&action=raw&ctype=text/css", "text/css");
}
//加载JS脚本
if (ns && ns[0].toLowerCase() !== 'mediawiki:') {
return console.log('ResourceLoader: 不允许加载MediaWiki以外的js脚本');
}
if (text.slice(-3).toLowerCase() !== '.js') text = text + '.js';
//if ($x.data('debug') !== true) text = text + '&debug=false';
return mw.loader.load("//wiki.biligame.com/township/index.php?title=" + text + "&action=raw&ctype=text/javascript", "text/javascript");
});
cbe0e6511760249eeecbea53f6bd8c71f5981211
768
767
2022-05-22T05:34:37Z
1381806
391
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
/* 来源:碧蓝航线WIKI*/
$(()=>mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"))();
82379acd2b4867df4d406bf9e5aeedfe8d28b72d
769
768
2022-05-22T05:36:13Z
1381806
391
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
/* 来源:碧蓝航线WIKI*/
// $(()=>mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"))();
de89bb5ded60f95034176b4c31ac275fc92c1d6c
775
769
2022-05-23T09:46:27Z
1381806
391
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
/* 来源:碧蓝航线WIKI*/
$(()=>mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"))();
82379acd2b4867df4d406bf9e5aeedfe8d28b72d
776
775
2022-05-23T11:29:12Z
1381806
391
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
/* 来源:碧蓝航线WIKI*/
mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript");
1631ae778954103f4d23ab552788784497630302
782
776
2023-04-13T04:11:44Z
13253902
7
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
/* 来源:碧蓝航线WIKI*/
mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript");
//编辑器插件SmartClick引入
//编辑器插件SmartClick引入
$(function(){
mw.loader.load("//wiki.biligame.com/umamusume/index.php?title=MediaWiki:SmartClick.js&action=raw&ctype=text/javascript", "text/javascript");
console.log("SmartClick.js initialized!");
});
347ecac2125607599a78856b6c1c537085e4c37b
808
782
2023-04-23T12:16:51Z
13253902
7
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
/* 来源:碧蓝航线WIKI*/
mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript");
1631ae778954103f4d23ab552788784497630302
用户:1381806/script/popper.js
2
351
771
2022-05-23T06:19:58Z
1381806
391
创建页面,内容为“/** * @popperjs/core v2.11.5 - MIT License */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).…”
javascript
text/javascript
/**
* @popperjs/core v2.11.5 - MIT License
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,f=e.offsetWidth;f>0&&(o=s(n.width)/f||1),a>0&&(i=s(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function c(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function p(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function l(e){return f(u(e)).left+c(e).scrollLeft}function d(e){return t(e).getComputedStyle(e)}function h(e){var t=d(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function m(e,n,o){void 0===o&&(o=!1);var i,a,d=r(n),m=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),v=u(n),g=f(e,m),y={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(d||!d&&!o)&&(("body"!==p(n)||h(v))&&(y=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:c(i)),r(n)?((b=f(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):v&&(b.x=l(v))),{x:g.left+y.scrollLeft-b.x,y:g.top+y.scrollTop-b.y,width:g.width,height:g.height}}function v(e){var t=f(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function g(e){return"html"===p(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||u(e)}function y(e){return["html","body","#document"].indexOf(p(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:y(g(e))}function b(e,n){var r;void 0===n&&(n=[]);var o=y(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],h(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(b(g(s)))}function x(e){return["table","td","th"].indexOf(p(e))>=0}function w(e){return r(e)&&"fixed"!==d(e).position?e.offsetParent:null}function O(e){for(var n=t(e),i=w(e);i&&x(i)&&"static"===d(i).position;)i=w(i);return i&&("html"===p(i)||"body"===p(i)&&"static"===d(i).position)?n:i||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===d(e).position)return null;var n=g(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(p(n))<0;){var i=d(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var j="top",E="bottom",D="right",A="left",L="auto",P=[j,E,D,A],M="start",k="end",W="viewport",B="popper",H=P.reduce((function(e,t){return e.concat([t+"-"+M,t+"-"+k])}),[]),T=[].concat(P,[L]).reduce((function(e,t){return e.concat([t,t+"-"+M,t+"-"+k])}),[]),R=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function S(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function q(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function N(e,r){return r===W?V(function(e){var n=t(e),r=u(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,f=0;return o&&(i=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=o.offsetLeft,f=o.offsetTop)),{width:i,height:a,x:s+l(e),y:f}}(e)):n(r)?function(e){var t=f(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(r):V(function(e){var t,n=u(e),r=c(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+l(e),p=-r.scrollTop;return"rtl"===d(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:p}}(u(e)))}function I(e,t,o){var s="clippingParents"===t?function(e){var t=b(g(e)),o=["absolute","fixed"].indexOf(d(e).position)>=0&&r(e)?O(e):e;return n(o)?t.filter((function(e){return n(e)&&q(e,o)&&"body"!==p(e)})):[]}(e):[].concat(t),f=[].concat(s,[o]),c=f[0],u=f.reduce((function(t,n){var r=N(e,n);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),N(e,c));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function _(e){return e.split("-")[1]}function F(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function U(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?_(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case j:t={x:s,y:n.y-r.height};break;case E:t={x:s,y:n.y+n.height};break;case D:t={x:n.x+n.width,y:f};break;case A:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?F(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case M:t[c]=t[c]-(n[p]/2-r[p]/2);break;case k:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function z(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function X(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Y(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.boundary,s=void 0===a?"clippingParents":a,c=r.rootBoundary,p=void 0===c?W:c,l=r.elementContext,d=void 0===l?B:l,h=r.altBoundary,m=void 0!==h&&h,v=r.padding,g=void 0===v?0:v,y=z("number"!=typeof g?g:X(g,P)),b=d===B?"reference":B,x=e.rects.popper,w=e.elements[m?b:d],O=I(n(w)?w:w.contextElement||u(e.elements.popper),s,p),A=f(e.elements.reference),L=U({reference:A,element:x,strategy:"absolute",placement:i}),M=V(Object.assign({},x,L)),k=d===B?M:A,H={top:O.top-k.top+y.top,bottom:k.bottom-O.bottom+y.bottom,left:O.left-k.left+y.left,right:k.right-O.right+y.right},T=e.modifiersData.offset;if(d===B&&T){var R=T[i];Object.keys(H).forEach((function(e){var t=[D,E].indexOf(e)>=0?1:-1,n=[j,E].indexOf(e)>=0?"y":"x";H[e]+=R[n]*t}))}return H}var G={placement:"bottom",modifiers:[],strategy:"absolute"};function J(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function K(e){void 0===e&&(e={});var t=e,r=t.defaultModifiers,o=void 0===r?[]:r,i=t.defaultOptions,a=void 0===i?G:i;return function(e,t,r){void 0===r&&(r=a);var i,s,f={placement:"bottom",orderedModifiers:[],options:Object.assign({},G,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},c=[],p=!1,u={state:f,setOptions:function(r){var i="function"==typeof r?r(f.options):r;l(),f.options=Object.assign({},a,f.options,i),f.scrollParents={reference:n(e)?b(e):e.contextElement?b(e.contextElement):[],popper:b(t)};var s,p,d=function(e){var t=S(e);return R.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((s=[].concat(o,f.options.modifiers),p=s.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(p).map((function(e){return p[e]}))));return f.orderedModifiers=d.filter((function(e){return e.enabled})),f.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"==typeof o){var i=o({state:f,name:t,instance:u,options:r}),a=function(){};c.push(i||a)}})),u.update()},forceUpdate:function(){if(!p){var e=f.elements,t=e.reference,n=e.popper;if(J(t,n)){f.rects={reference:m(t,O(n),"fixed"===f.options.strategy),popper:v(n)},f.reset=!1,f.placement=f.options.placement,f.orderedModifiers.forEach((function(e){return f.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<f.orderedModifiers.length;r++)if(!0!==f.reset){var o=f.orderedModifiers[r],i=o.fn,a=o.options,s=void 0===a?{}:a,c=o.name;"function"==typeof i&&(f=i({state:f,options:s,name:c,instance:u})||f)}else f.reset=!1,r=-1}}},update:(i=function(){return new Promise((function(e){u.forceUpdate(),e(f)}))},function(){return s||(s=new Promise((function(e){Promise.resolve().then((function(){s=void 0,e(i())}))}))),s}),destroy:function(){l(),p=!0}};if(!J(e,t))return u;function l(){c.forEach((function(e){return e()})),c=[]}return u.setOptions(r).then((function(e){!p&&r.onFirstUpdate&&r.onFirstUpdate(e)})),u}}var Q={passive:!0};var Z={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var n=e.state,r=e.instance,o=e.options,i=o.scroll,a=void 0===i||i,s=o.resize,f=void 0===s||s,c=t(n.elements.popper),p=[].concat(n.scrollParents.reference,n.scrollParents.popper);return a&&p.forEach((function(e){e.addEventListener("scroll",r.update,Q)})),f&&c.addEventListener("resize",r.update,Q),function(){a&&p.forEach((function(e){e.removeEventListener("scroll",r.update,Q)})),f&&c.removeEventListener("resize",r.update,Q)}},data:{}};var $={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=U({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},ee={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(e){var n,r=e.popper,o=e.popperRect,i=e.placement,a=e.variation,f=e.offsets,c=e.position,p=e.gpuAcceleration,l=e.adaptive,h=e.roundOffsets,m=e.isFixed,v=f.x,g=void 0===v?0:v,y=f.y,b=void 0===y?0:y,x="function"==typeof h?h({x:g,y:b}):{x:g,y:b};g=x.x,b=x.y;var w=f.hasOwnProperty("x"),L=f.hasOwnProperty("y"),P=A,M=j,W=window;if(l){var B=O(r),H="clientHeight",T="clientWidth";if(B===t(r)&&"static"!==d(B=u(r)).position&&"absolute"===c&&(H="scrollHeight",T="scrollWidth"),B=B,i===j||(i===A||i===D)&&a===k)M=E,b-=(m&&B===W&&W.visualViewport?W.visualViewport.height:B[H])-o.height,b*=p?1:-1;if(i===A||(i===j||i===E)&&a===k)P=D,g-=(m&&B===W&&W.visualViewport?W.visualViewport.width:B[T])-o.width,g*=p?1:-1}var R,S=Object.assign({position:c},l&&ee),C=!0===h?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:s(t*r)/r||0,y:s(n*r)/r||0}}({x:g,y:b}):{x:g,y:b};return g=C.x,b=C.y,p?Object.assign({},S,((R={})[M]=L?"0":"",R[P]=w?"0":"",R.transform=(W.devicePixelRatio||1)<=1?"translate("+g+"px, "+b+"px)":"translate3d("+g+"px, "+b+"px, 0)",R)):Object.assign({},S,((n={})[M]=L?b+"px":"",n[P]=w?g+"px":"",n.transform="",n))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,s=n.roundOffsets,f=void 0===s||s,c={placement:C(t.placement),variation:_(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,te(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:f})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,te(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};var re={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];r(i)&&p(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});r(o)&&p(o)&&(Object.assign(o.style,a),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};var oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,a=T.reduce((function(e,n){return e[n]=function(e,t,n){var r=C(e),o=[A,j].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[A,D].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},ie={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,(function(e){return ie[e]}))}var se={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,(function(e){return se[e]}))}function ce(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?T:f,p=_(r),u=p?s?H:H.filter((function(e){return _(e)===p})):P,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=Y(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var pe={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,g=C(v),y=f||(g===v||!h?[ae(v)]:function(e){if(C(e)===L)return[];var t=ae(e);return[fe(e),t,fe(t)]}(v)),b=[v].concat(y).reduce((function(e,n){return e.concat(C(n)===L?ce(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,P=!0,k=b[0],W=0;W<b.length;W++){var B=b[W],H=C(B),T=_(B)===M,R=[j,E].indexOf(H)>=0,S=R?"width":"height",q=Y(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),V=R?T?D:A:T?E:j;x[S]>w[S]&&(V=ae(V));var N=ae(V),I=[];if(i&&I.push(q[H]<=0),s&&I.push(q[V]<=0,q[N]<=0),I.every((function(e){return e}))){k=B,P=!1;break}O.set(B,I)}if(P)for(var F=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},U=h?3:1;U>0;U--){if("break"===F(U))break}t.placement!==k&&(t.modifiersData[r]._skip=!0,t.placement=k,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ue(e,t,n){return i(e,a(t,n))}var le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,g=n.tetherOffset,y=void 0===g?0:g,b=Y(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=_(t.placement),L=!w,P=F(x),k="x"===P?"y":"x",W=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,q={x:0,y:0};if(W){if(s){var V,N="y"===P?j:A,I="y"===P?E:D,U="y"===P?"height":"width",z=W[P],X=z+b[N],G=z-b[I],J=m?-H[U]/2:0,K=w===M?B[U]:H[U],Q=w===M?-H[U]:-B[U],Z=t.elements.arrow,$=m&&Z?v(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=ue(0,B[U],$[U]),oe=L?B[U]/2-J-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=L?-B[U]/2+J+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&O(t.elements.arrow),se=ae?"y"===P?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(V=null==S?void 0:S[P])?V:0,ce=z+ie-fe,pe=ue(m?a(X,z+oe-fe-se):X,z,m?i(G,ce):G);W[P]=pe,q[P]=pe-z}if(c){var le,de="x"===P?j:A,he="x"===P?E:D,me=W[k],ve="y"===k?"height":"width",ge=me+b[de],ye=me-b[he],be=-1!==[j,A].indexOf(x),xe=null!=(le=null==S?void 0:S[k])?le:0,we=be?ge:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ye,je=m&&be?function(e,t,n){var r=ue(e,t,n);return r>n?n:r}(we,me,Oe):ue(m?we:ge,me,m?Oe:ye);W[k]=je,q[k]=je-me}t.modifiersData[r]=q}},requiresIfExists:["offset"]};var de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=F(s),c=[A,D].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return z("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:X(e,P))}(o.padding,n),u=v(i),l="y"===f?j:A,d="y"===f?E:D,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],g=O(i),y=g?"y"===f?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],L=y/2-u[c]/2+b,M=ue(x,L,w),k=f;n.modifiersData[r]=((t={})[k]=M,t.centerOffset=M-L,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&q(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function he(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function me(e){return[j,D,E,A].some((function(t){return e[t]>=0}))}var ve={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=Y(t,{elementContext:"reference"}),s=Y(t,{altBoundary:!0}),f=he(a,r),c=he(s,o,i),p=me(f),u=me(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},ge=K({defaultModifiers:[Z,$,ne,re]}),ye=[Z,$,ne,re,oe,pe,le,de,ve],be=K({defaultModifiers:ye});e.applyStyles=re,e.arrow=de,e.computeStyles=ne,e.createPopper=be,e.createPopperLite=ge,e.defaultModifiers=ye,e.detectOverflow=Y,e.eventListeners=Z,e.flip=pe,e.hide=ve,e.offset=oe,e.popperGenerator=K,e.popperOffsets=$,e.preventOverflow=le,Object.defineProperty(e,"__esModule",{value:!0})}));
884325b71aa231851d8c2aa54aeb452ef2347c42
用户:1381806/script/tippy.js
2
352
772
2022-05-23T06:20:51Z
1381806
391
创建页面,内容为“!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t=t||self).tippy=e(t.Popper)}(this,(function(t){"use strict";var e="undefined"!=typeof window&&"undefined"!=typeof document,n=!!e&&!!window.msCrypto,r={passive:!0,capture:!0},o=function(){return document.body};function i(t,e,n){if(Array.isArray(t)){var r=t[e];return null==r?Array.isAr…”
javascript
text/javascript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t=t||self).tippy=e(t.Popper)}(this,(function(t){"use strict";var e="undefined"!=typeof window&&"undefined"!=typeof document,n=!!e&&!!window.msCrypto,r={passive:!0,capture:!0},o=function(){return document.body};function i(t,e,n){if(Array.isArray(t)){var r=t[e];return null==r?Array.isArray(n)?n[e]:n:r}return t}function a(t,e){var n={}.toString.call(t);return 0===n.indexOf("[object")&&n.indexOf(e+"]")>-1}function s(t,e){return"function"==typeof t?t.apply(void 0,e):t}function u(t,e){return 0===e?t:function(r){clearTimeout(n),n=setTimeout((function(){t(r)}),e)};var n}function p(t,e){var n=Object.assign({},t);return e.forEach((function(t){delete n[t]})),n}function c(t){return[].concat(t)}function f(t,e){-1===t.indexOf(e)&&t.push(e)}function l(t){return t.split("-")[0]}function d(t){return[].slice.call(t)}function v(t){return Object.keys(t).reduce((function(e,n){return void 0!==t[n]&&(e[n]=t[n]),e}),{})}function m(){return document.createElement("div")}function g(t){return["Element","Fragment"].some((function(e){return a(t,e)}))}function h(t){return a(t,"MouseEvent")}function b(t){return!(!t||!t._tippy||t._tippy.reference!==t)}function y(t){return g(t)?[t]:function(t){return a(t,"NodeList")}(t)?d(t):Array.isArray(t)?t:d(document.querySelectorAll(t))}function w(t,e){t.forEach((function(t){t&&(t.style.transitionDuration=e+"ms")}))}function x(t,e){t.forEach((function(t){t&&t.setAttribute("data-state",e)}))}function E(t){var e,n=c(t)[0];return null!=n&&null!=(e=n.ownerDocument)&&e.body?n.ownerDocument:document}function O(t,e,n){var r=e+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(e){t[r](e,n)}))}function C(t,e){for(var n=e;n;){var r;if(t.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var T={isTouch:!1},A=0;function L(){T.isTouch||(T.isTouch=!0,window.performance&&document.addEventListener("mousemove",D))}function D(){var t=performance.now();t-A<20&&(T.isTouch=!1,document.removeEventListener("mousemove",D)),A=t}function k(){var t=document.activeElement;if(b(t)){var e=t._tippy;t.blur&&!e.state.isVisible&&t.blur()}}var R=Object.assign({appendTo:o,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),P=Object.keys(R);function j(t){var e=(t.plugins||[]).reduce((function(e,n){var r,o=n.name,i=n.defaultValue;o&&(e[o]=void 0!==t[o]?t[o]:null!=(r=R[o])?r:i);return e}),{});return Object.assign({},t,e)}function M(t,e){var n=Object.assign({},e,{content:s(e.content,[t])},e.ignoreAttributes?{}:function(t,e){return(e?Object.keys(j(Object.assign({},R,{plugins:e}))):P).reduce((function(e,n){var r=(t.getAttribute("data-tippy-"+n)||"").trim();if(!r)return e;if("content"===n)e[n]=r;else try{e[n]=JSON.parse(r)}catch(t){e[n]=r}return e}),{})}(t,e.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?e.interactive:n.aria.expanded,content:"auto"===n.aria.content?e.interactive?null:"describedby":n.aria.content},n}function V(t,e){t.innerHTML=e}function I(t){var e=m();return!0===t?e.className="tippy-arrow":(e.className="tippy-svg-arrow",g(t)?e.appendChild(t):V(e,t)),e}function S(t,e){g(e.content)?(V(t,""),t.appendChild(e.content)):"function"!=typeof e.content&&(e.allowHTML?V(t,e.content):t.textContent=e.content)}function B(t){var e=t.firstElementChild,n=d(e.children);return{box:e,content:n.find((function(t){return t.classList.contains("tippy-content")})),arrow:n.find((function(t){return t.classList.contains("tippy-arrow")||t.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(t){return t.classList.contains("tippy-backdrop")}))}}function N(t){var e=m(),n=m();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=m();function o(n,r){var o=B(e),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||S(a,t.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(I(r.arrow))):i.appendChild(I(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),S(r,t.props),e.appendChild(n),n.appendChild(r),o(t.props,t.props),{popper:e,onUpdate:o}}N.$$tippy=!0;var H=1,U=[],_=[];function z(e,a){var p,g,b,y,A,L,D,k,P=M(e,Object.assign({},R,j(v(a)))),V=!1,I=!1,S=!1,N=!1,z=[],F=u(wt,P.interactiveDebounce),W=H++,X=(k=P.plugins).filter((function(t,e){return k.indexOf(t)===e})),Y={id:W,reference:e,popper:m(),popperInstance:null,props:P,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:X,clearDelayTimeouts:function(){clearTimeout(p),clearTimeout(g),cancelAnimationFrame(b)},setProps:function(t){if(Y.state.isDestroyed)return;at("onBeforeUpdate",[Y,t]),bt();var n=Y.props,r=M(e,Object.assign({},n,v(t),{ignoreAttributes:!0}));Y.props=r,ht(),n.interactiveDebounce!==r.interactiveDebounce&&(pt(),F=u(wt,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?c(n.triggerTarget).forEach((function(t){t.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");ut(),it(),J&&J(n,r);Y.popperInstance&&(Ct(),At().forEach((function(t){requestAnimationFrame(t._tippy.popperInstance.forceUpdate)})));at("onAfterUpdate",[Y,t])},setContent:function(t){Y.setProps({content:t})},show:function(){var t=Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=T.isTouch&&!Y.props.touch,a=i(Y.props.duration,0,R.duration);if(t||e||n||r)return;if(et().hasAttribute("disabled"))return;if(at("onShow",[Y],!1),!1===Y.props.onShow(Y))return;Y.state.isVisible=!0,tt()&&($.style.visibility="visible");it(),dt(),Y.state.isMounted||($.style.transition="none");if(tt()){var u=rt(),p=u.box,c=u.content;w([p,c],0)}L=function(){var t;if(Y.state.isVisible&&!N){if(N=!0,$.offsetHeight,$.style.transition=Y.props.moveTransition,tt()&&Y.props.animation){var e=rt(),n=e.box,r=e.content;w([n,r],a),x([n,r],"visible")}st(),ut(),f(_,Y),null==(t=Y.popperInstance)||t.forceUpdate(),at("onMount",[Y]),Y.props.animation&&tt()&&function(t,e){mt(t,e)}(a,(function(){Y.state.isShown=!0,at("onShown",[Y])}))}},function(){var t,e=Y.props.appendTo,n=et();t=Y.props.interactive&&e===o||"parent"===e?n.parentNode:s(e,[n]);t.contains($)||t.appendChild($);Y.state.isMounted=!0,Ct()}()},hide:function(){var t=!Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=i(Y.props.duration,1,R.duration);if(t||e||n)return;if(at("onHide",[Y],!1),!1===Y.props.onHide(Y))return;Y.state.isVisible=!1,Y.state.isShown=!1,N=!1,V=!1,tt()&&($.style.visibility="hidden");if(pt(),vt(),it(!0),tt()){var o=rt(),a=o.box,s=o.content;Y.props.animation&&(w([a,s],r),x([a,s],"hidden"))}st(),ut(),Y.props.animation?tt()&&function(t,e){mt(t,(function(){!Y.state.isVisible&&$.parentNode&&$.parentNode.contains($)&&e()}))}(r,Y.unmount):Y.unmount()},hideWithInteractivity:function(t){nt().addEventListener("mousemove",F),f(U,F),F(t)},enable:function(){Y.state.isEnabled=!0},disable:function(){Y.hide(),Y.state.isEnabled=!1},unmount:function(){Y.state.isVisible&&Y.hide();if(!Y.state.isMounted)return;Tt(),At().forEach((function(t){t._tippy.unmount()})),$.parentNode&&$.parentNode.removeChild($);_=_.filter((function(t){return t!==Y})),Y.state.isMounted=!1,at("onHidden",[Y])},destroy:function(){if(Y.state.isDestroyed)return;Y.clearDelayTimeouts(),Y.unmount(),bt(),delete e._tippy,Y.state.isDestroyed=!0,at("onDestroy",[Y])}};if(!P.render)return Y;var q=P.render(Y),$=q.popper,J=q.onUpdate;$.setAttribute("data-tippy-root",""),$.id="tippy-"+Y.id,Y.popper=$,e._tippy=Y,$._tippy=Y;var G=X.map((function(t){return t.fn(Y)})),K=e.hasAttribute("aria-expanded");return ht(),ut(),it(),at("onCreate",[Y]),P.showOnCreate&&Lt(),$.addEventListener("mouseenter",(function(){Y.props.interactive&&Y.state.isVisible&&Y.clearDelayTimeouts()})),$.addEventListener("mouseleave",(function(){Y.props.interactive&&Y.props.trigger.indexOf("mouseenter")>=0&&nt().addEventListener("mousemove",F)})),Y;function Q(){var t=Y.props.touch;return Array.isArray(t)?t:[t,0]}function Z(){return"hold"===Q()[0]}function tt(){var t;return!(null==(t=Y.props.render)||!t.$$tippy)}function et(){return D||e}function nt(){var t=et().parentNode;return t?E(t):document}function rt(){return B($)}function ot(t){return Y.state.isMounted&&!Y.state.isVisible||T.isTouch||y&&"focus"===y.type?0:i(Y.props.delay,t?0:1,R.delay)}function it(t){void 0===t&&(t=!1),$.style.pointerEvents=Y.props.interactive&&!t?"":"none",$.style.zIndex=""+Y.props.zIndex}function at(t,e,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[t]&&n[t].apply(n,e)})),n)&&(r=Y.props)[t].apply(r,e)}function st(){var t=Y.props.aria;if(t.content){var n="aria-"+t.content,r=$.id;c(Y.props.triggerTarget||e).forEach((function(t){var e=t.getAttribute(n);if(Y.state.isVisible)t.setAttribute(n,e?e+" "+r:r);else{var o=e&&e.replace(r,"").trim();o?t.setAttribute(n,o):t.removeAttribute(n)}}))}}function ut(){!K&&Y.props.aria.expanded&&c(Y.props.triggerTarget||e).forEach((function(t){Y.props.interactive?t.setAttribute("aria-expanded",Y.state.isVisible&&t===et()?"true":"false"):t.removeAttribute("aria-expanded")}))}function pt(){nt().removeEventListener("mousemove",F),U=U.filter((function(t){return t!==F}))}function ct(t){if(!T.isTouch||!S&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!Y.props.interactive||!C($,n)){if(c(Y.props.triggerTarget||e).some((function(t){return C(t,n)}))){if(T.isTouch)return;if(Y.state.isVisible&&Y.props.trigger.indexOf("click")>=0)return}else at("onClickOutside",[Y,t]);!0===Y.props.hideOnClick&&(Y.clearDelayTimeouts(),Y.hide(),I=!0,setTimeout((function(){I=!1})),Y.state.isMounted||vt())}}}function ft(){S=!0}function lt(){S=!1}function dt(){var t=nt();t.addEventListener("mousedown",ct,!0),t.addEventListener("touchend",ct,r),t.addEventListener("touchstart",lt,r),t.addEventListener("touchmove",ft,r)}function vt(){var t=nt();t.removeEventListener("mousedown",ct,!0),t.removeEventListener("touchend",ct,r),t.removeEventListener("touchstart",lt,r),t.removeEventListener("touchmove",ft,r)}function mt(t,e){var n=rt().box;function r(t){t.target===n&&(O(n,"remove",r),e())}if(0===t)return e();O(n,"remove",A),O(n,"add",r),A=r}function gt(t,n,r){void 0===r&&(r=!1),c(Y.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),z.push({node:e,eventType:t,handler:n,options:r})}))}function ht(){var t;Z()&&(gt("touchstart",yt,{passive:!0}),gt("touchend",xt,{passive:!0})),(t=Y.props.trigger,t.split(/\s+/).filter(Boolean)).forEach((function(t){if("manual"!==t)switch(gt(t,yt),t){case"mouseenter":gt("mouseleave",xt);break;case"focus":gt(n?"focusout":"blur",Et);break;case"focusin":gt("focusout",Et)}}))}function bt(){z.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),z=[]}function yt(t){var e,n=!1;if(Y.state.isEnabled&&!Ot(t)&&!I){var r="focus"===(null==(e=y)?void 0:e.type);y=t,D=t.currentTarget,ut(),!Y.state.isVisible&&h(t)&&U.forEach((function(e){return e(t)})),"click"===t.type&&(Y.props.trigger.indexOf("mouseenter")<0||V)&&!1!==Y.props.hideOnClick&&Y.state.isVisible?n=!0:Lt(t),"click"===t.type&&(V=!n),n&&!r&&Dt(t)}}function wt(t){var e=t.target,n=et().contains(e)||$.contains(e);"mousemove"===t.type&&n||function(t,e){var n=e.clientX,r=e.clientY;return t.every((function(t){var e=t.popperRect,o=t.popperState,i=t.props.interactiveBorder,a=l(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,p="top"===a?s.bottom.y:0,c="right"===a?s.left.x:0,f="left"===a?s.right.x:0,d=e.top-r+u>i,v=r-e.bottom-p>i,m=e.left-n+c>i,g=n-e.right-f>i;return d||v||m||g}))}(At().concat($).map((function(t){var e,n=null==(e=t._tippy.popperInstance)?void 0:e.state;return n?{popperRect:t.getBoundingClientRect(),popperState:n,props:P}:null})).filter(Boolean),t)&&(pt(),Dt(t))}function xt(t){Ot(t)||Y.props.trigger.indexOf("click")>=0&&V||(Y.props.interactive?Y.hideWithInteractivity(t):Dt(t))}function Et(t){Y.props.trigger.indexOf("focusin")<0&&t.target!==et()||Y.props.interactive&&t.relatedTarget&&$.contains(t.relatedTarget)||Dt(t)}function Ot(t){return!!T.isTouch&&Z()!==t.type.indexOf("touch")>=0}function Ct(){Tt();var n=Y.props,r=n.popperOptions,o=n.placement,i=n.offset,a=n.getReferenceClientRect,s=n.moveTransition,u=tt()?B($).arrow:null,p=a?{getBoundingClientRect:a,contextElement:a.contextElement||et()}:e,c=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(t){var e=t.state;if(tt()){var n=rt().box;["placement","reference-hidden","escaped"].forEach((function(t){"placement"===t?n.setAttribute("data-placement",e.placement):e.attributes.popper["data-popper-"+t]?n.setAttribute("data-"+t,""):n.removeAttribute("data-"+t)})),e.attributes.popper={}}}}];tt()&&u&&c.push({name:"arrow",options:{element:u,padding:3}}),c.push.apply(c,(null==r?void 0:r.modifiers)||[]),Y.popperInstance=t.createPopper(p,$,Object.assign({},r,{placement:o,onFirstUpdate:L,modifiers:c}))}function Tt(){Y.popperInstance&&(Y.popperInstance.destroy(),Y.popperInstance=null)}function At(){return d($.querySelectorAll("[data-tippy-root]"))}function Lt(t){Y.clearDelayTimeouts(),t&&at("onTrigger",[Y,t]),dt();var e=ot(!0),n=Q(),r=n[0],o=n[1];T.isTouch&&"hold"===r&&o&&(e=o),e?p=setTimeout((function(){Y.show()}),e):Y.show()}function Dt(t){if(Y.clearDelayTimeouts(),at("onUntrigger",[Y,t]),Y.state.isVisible){if(!(Y.props.trigger.indexOf("mouseenter")>=0&&Y.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(t.type)>=0&&V)){var e=ot(!1);e?g=setTimeout((function(){Y.state.isVisible&&Y.hide()}),e):b=requestAnimationFrame((function(){Y.hide()}))}}else vt()}}function F(t,e){void 0===e&&(e={});var n=R.plugins.concat(e.plugins||[]);document.addEventListener("touchstart",L,r),window.addEventListener("blur",k);var o=Object.assign({},e,{plugins:n}),i=y(t).reduce((function(t,e){var n=e&&z(e,o);return n&&t.push(n),t}),[]);return g(t)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(t){Object.keys(t).forEach((function(e){R[e]=t[e]}))},F.currentInput=T;var W=Object.assign({},t.applyStyles,{effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(t){var e;if(null==(e=t.props.render)||!e.$$tippy)return{};var n=B(t.popper),r=n.box,o=n.content,i=t.props.animateFill?function(){var t=m();return t.className="tippy-backdrop",x([t],"hidden"),t}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",t.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var t=r.style.transitionDuration,e=Number(t.replace("ms",""));o.style.transitionDelay=Math.round(e/10)+"ms",i.style.transitionDuration=t,x([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&x([i],"hidden")}}}};var q={clientX:0,clientY:0},$=[];function J(t){var e=t.clientX,n=t.clientY;q={clientX:e,clientY:n}}var G={name:"followCursor",defaultValue:!1,fn:function(t){var e=t.reference,n=E(t.props.triggerTarget||e),r=!1,o=!1,i=!0,a=t.props;function s(){return"initial"===t.props.followCursor&&t.state.isVisible}function u(){n.addEventListener("mousemove",f)}function p(){n.removeEventListener("mousemove",f)}function c(){r=!0,t.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||e.contains(n.target),o=t.props.followCursor,i=n.clientX,a=n.clientY,s=e.getBoundingClientRect(),u=i-s.left,p=a-s.top;!r&&t.props.interactive||t.setProps({getReferenceClientRect:function(){var t=e.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=t.left+u,r=t.top+p);var s="horizontal"===o?t.top:r,c="vertical"===o?t.right:n,f="horizontal"===o?t.bottom:r,l="vertical"===o?t.left:n;return{width:c-l,height:f-s,top:s,right:c,bottom:f,left:l}}})}function l(){t.props.followCursor&&($.push({instance:t,doc:n}),function(t){t.addEventListener("mousemove",J)}(n))}function d(){0===($=$.filter((function(e){return e.instance!==t}))).filter((function(t){return t.doc===n})).length&&function(t){t.removeEventListener("mousemove",J)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=t.props},onAfterUpdate:function(e,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!t.state.isMounted||o||s()||u()):(p(),c()))},onMount:function(){t.props.followCursor&&!o&&(i&&(f(q),i=!1),s()||u())},onTrigger:function(t,e){h(e)&&(q={clientX:e.clientX,clientY:e.clientY}),o="focus"===e.type},onHidden:function(){t.props.followCursor&&(c(),p(),i=!0)}}}};var K={name:"inlinePositioning",defaultValue:!1,fn:function(t){var e,n=t.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;t.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),e!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),t.setProps({getReferenceClientRect:function(){return function(t){return function(t,e,n,r){if(n.length<2||null===t)return e;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||e;switch(t){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===t,s=o.top,u=i.bottom,p=a?o.left:i.left,c=a?o.right:i.right;return{top:s,bottom:u,left:p,right:c,width:c-p,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(t){return t.left}))),l=Math.max.apply(Math,n.map((function(t){return t.right}))),d=n.filter((function(e){return"left"===t?e.left===f:e.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return e}}(l(t),n.getBoundingClientRect(),d(n.getClientRects()),r)}(a.placement)}})),e=a.placement)}};function s(){var e;o||(e=function(t,e){var n;return{popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat(((null==(n=t.popperOptions)?void 0:n.modifiers)||[]).filter((function(t){return t.name!==e.name})),[e])})}}(t.props,a),o=!0,t.setProps(e),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(e,n){if(h(n)){var o=d(t.reference.getClientRects()),i=o.find((function(t){return t.left-2<=n.clientX&&t.right+2>=n.clientX&&t.top-2<=n.clientY&&t.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var Q={name:"sticky",defaultValue:!1,fn:function(t){var e=t.reference,n=t.popper;function r(e){return!0===t.props.sticky||t.props.sticky===e}var o=null,i=null;function a(){var s=r("reference")?(t.popperInstance?t.popperInstance.state.elements.reference:e).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Z(o,s)||u&&Z(i,u))&&t.popperInstance&&t.popperInstance.update(),o=s,i=u,t.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){t.props.sticky&&a()}}}};function Z(t,e){return!t||!e||(t.top!==e.top||t.right!==e.right||t.bottom!==e.bottom||t.left!==e.left)}return e&&function(t){var e=document.createElement("style");e.textContent=t,e.setAttribute("data-tippy-stylesheet","");var n=document.head,r=document.querySelector("head>style,head>link");r?n.insertBefore(e,r):n.appendChild(e)}('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'),F.setDefaultProps({plugins:[Y,G,K,Q],render:N}),F.createSingleton=function(t,e){var n;void 0===e&&(e={});var r,o=t,i=[],a=[],s=e.overrides,u=[],f=!1;function l(){a=o.map((function(t){return c(t.props.triggerTarget||t.reference)})).reduce((function(t,e){return t.concat(e)}),[])}function d(){i=o.map((function(t){return t.reference}))}function v(t){o.forEach((function(e){t?e.enable():e.disable()}))}function g(t){return o.map((function(e){var n=e.setProps;return e.setProps=function(o){n(o),e.reference===r&&t.setProps(o)},function(){e.setProps=n}}))}function h(t,e){var n=a.indexOf(e);if(e!==r){r=e;var u=(s||[]).concat("content").reduce((function(t,e){return t[e]=o[n].props[e],t}),{});t.setProps(Object.assign({},u,{getReferenceClientRect:"function"==typeof u.getReferenceClientRect?u.getReferenceClientRect:function(){var t;return null==(t=i[n])?void 0:t.getBoundingClientRect()}}))}}v(!1),d(),l();var b={fn:function(){return{onDestroy:function(){v(!0)},onHidden:function(){r=null},onClickOutside:function(t){t.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(t){t.props.showOnCreate&&!f&&(f=!0,h(t,i[0]))},onTrigger:function(t,e){h(t,e.currentTarget)}}}},y=F(m(),Object.assign({},p(e,["overrides"]),{plugins:[b].concat(e.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat((null==(n=e.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(t){if(w(),!r&&null==t)return h(y,i[0]);if(!r||null!=t){if("number"==typeof t)return i[t]&&h(y,i[t]);if(o.indexOf(t)>=0){var e=t.reference;return h(y,e)}return i.indexOf(t)>=0?h(y,t):void 0}},y.showNext=function(){var t=i[0];if(!r)return y.show(0);var e=i.indexOf(r);y.show(i[e+1]||t)},y.showPrevious=function(){var t=i[i.length-1];if(!r)return y.show(t);var e=i.indexOf(r),n=i[e-1]||t;y.show(n)};var x=y.setProps;return y.setProps=function(t){s=t.overrides||s,x(t)},y.setInstances=function(t){v(!0),u.forEach((function(t){return t()})),o=t,v(!1),d(),l(),u=g(y),y.setProps({triggerTarget:a})},u=g(y),y},F.delegate=function(t,e){var n=[],o=[],i=!1,a=e.target,s=p(e,["target"]),u=Object.assign({},s,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},s,{showOnCreate:!0}),l=F(t,u);function d(t){if(t.target&&!i){var n=t.target.closest(a);if(n){var r=n.getAttribute("data-tippy-trigger")||e.trigger||R.trigger;if(!n._tippy&&!("touchstart"===t.type&&"boolean"==typeof f.touch||"touchstart"!==t.type&&r.indexOf(X[t.type])<0)){var s=F(n,f);s&&(o=o.concat(s))}}}}function v(t,e,r,o){void 0===o&&(o=!1),t.addEventListener(e,r,o),n.push({node:t,eventType:e,handler:r,options:o})}return c(l).forEach((function(t){var e=t.destroy,a=t.enable,s=t.disable;t.destroy=function(t){void 0===t&&(t=!0),t&&o.forEach((function(t){t.destroy()})),o=[],n.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),n=[],e()},t.enable=function(){a(),o.forEach((function(t){return t.enable()})),i=!1},t.disable=function(){s(),o.forEach((function(t){return t.disable()})),i=!0},function(t){var e=t.reference;v(e,"touchstart",d,r),v(e,"mouseover",d),v(e,"focusin",d),v(e,"click",d)}(t)})),l},F.hideAll=function(t){var e=void 0===t?{}:t,n=e.exclude,r=e.duration;_.forEach((function(t){var e=!1;if(n&&(e=b(n)?t.reference===n:t.popper===n.popper),!e){var o=t.props.duration;t.setProps({duration:r}),t.hide(),t.state.isDestroyed||t.setProps({duration:o})}}))},F.roundArrow='<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>',F}));
3e3fec36da29dcdc814b441feb41a8e16bf8f654
首页
0
1
777
626
2022-06-28T04:15:14Z
13253902
7
wikitext
text/x-wiki
<!--页面开始-->
__NOTOC__
<div class="container main">
<div class="row">
<!--以上3行必须存在请不要删减-->
<!--以下开始是左侧8列的内容-->
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<!--轮播图开始-->
<includeonly>
<div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px">
<div class="carousel-inner">
<div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧-->
<div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧-->
</div>
<ol class="carousel-indicators">
<li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧-->
<li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧-->
<li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧-->
<li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧-->
<li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧-->
</ol>
</div>
</includeonly>
<!--轮播图结束-->
<!--角色块开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="ts-title-head">建造</div>
<div class="ts-title-foot>
<div class="ts-box">
{{首页建造图标|房屋|房屋}}
{{首页建造图标|社区建筑|社区建筑}}
{{首页建造图标|工厂|工厂}}
{{首页建造图标|耕种|耕种}}
{{首页建造图标|装饰物|装饰物}}
{{首页建造图标|特殊|特殊}}
</div>
</div>
<includeonly><div class="bili-divider"></div>
<div class="bili-title-h2">物品</div>
{{按钮|产品|产品}}</includeonly>
</div>
<!--词条块1结束-->
<includeonly><!--词条块2开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">词条块2</div>
<div class="bili-divider" style="background:#000000"></div>
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
{{按钮|实际的链接|显示的文字}}
</div>
<!--词条块2结束--></includeonly>
<!--在左侧8列中再分出2列-->
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
</div>
<!--在左侧8列中再分出2列-->
</div>
<!--左侧8列的内容结束-->
<!--以下开始是右侧4列的内容-->
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<includeonly><!--链接块1开始-->
<div class="game-introduction" style="margin-bottom:40px">
<div class="bili-title-h1">链接块1</div>
<div class="bili-divider" style="background:#000000"></div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
<div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]]
</div>
</div>
<!--链接块1结束--></includeonly>
<!--关于WIKI开始-->
<div class="ts-title-head">关于WIKI</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。
WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。
本WIKI为开放编辑权限,任何人都可以在遵守 [https://wiki.biligame.com/wiki/WIKI%E7%A4%BE%E5%8C%BA%E8%A7%84%E5%88%99 BWIKI社区规则] 的前提下进行内容制作,违规者将会被封禁。<br><br>
站点内所涉及的公司名称、商标、产品等均为其各自所有者所有的资产,站点内使用仅供用于识别。站点内使用的所有游戏图片,游戏文案等其他素材,其版权为游戏权利方所有。<br><br>
如有异议请发邮件至:bwiki@bilibili.com 或联系客服QQ:1968897839<br><br>
QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160]
</span>
----
<p class="text-center">本WIKI遵循[https://creativecommons.org/licenses/by-nc-sa/3.0/ BY-NC-SA]协议。(特殊注明除外)</p>
<div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user"> [[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style=""> [[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil"> [[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div>
</div>
<!--关于WIKI结束-->
<!--关于游戏开始-->
<div class="ts-title-head" style="margin-top:24px;">关于游戏</div>
<div class="ts-title-foot" style="padding:8px 20px;text-align:left;">
<span class="sidebar-content">
本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。
支持平台:Android、iOS、Windows、Mac
游戏开发商:[https://www.playrix.com/township/index.html Playrix]
国内运营商:[http://mxcz.coco.cn/ 触控游戏]
</span>
</div>
<!--关于游戏结束-->
</div>
<!--右侧4列的内容结束-->
</div>
</div>
<!--页面结束-->
f799c71dd78610ad4a071e4aaf87eec54ae8dd51
梦想小镇:Sandbox
4
353
778
2022-07-02T07:49:21Z
13253902
7
创建页面,内容为“Hello”
wikitext
text/x-wiki
Hello
f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
模块:测试
828
354
781
2022-09-16T05:54:01Z
13253902
7
创建页面,内容为“http = require("socket.http") body, ret = http.request("http://wwww.baidu.com") print(body)”
Scribunto
text/plain
http = require("socket.http")
body, ret = http.request("http://wwww.baidu.com")
print(body)
4937a5fb9afa9571da6bf07e961387efb7a5efee
模板:模板
10
364
801
2022-09-16T07:02:59Z
wiki>39886146
0
调整分类。根据不同的命名空间赋予不同的分类。现在帮助页面不属于模板分类了。
wikitext
text/x-wiki
<includeonly>{{#switch:{{{1|}}}
|信息={{{2}}}:[[{{{2}}}::{{{3}}}]]
|标准={{#ifeq:{{PAGENAME}}|{{ROOTPAGENAME}}|{{#set:|模板提示={{{2}}}}}}}{{#tag:SyntaxHighlight|{{#uescnowiki:{{{2}}}}}|lang={{{lang|html+handlebars}}}}}
|示例=<div>{{#tag:SyntaxHighlight|{{#uescnowiki:{{{2}}}}}|lang={{{lang|html+handlebars}}}}}{{#uesc:{{{2}}}}}</div>
|示例序号={{#vardefineecho: demoindex | {{#expr: {{#var: demoindex }} + 1 }} }}
|作者={{#tag:bilicontributors|{{{2}}}}}
|依赖=<ul>{{#vardefine: index | 2 }}{{#while: | {{#if: {{{ {{#var: index }}| }}} | true }} |
<li>[[{{#vardefineecho:{{{ {{#var: index }} }}}|{{{ {{#var: index }} }}}}}]]</li>
{{#vardefine: index | {{#expr: {{#var: index }} + 1 }} }} }}</ul>
{{#vardefine: index | 2 }}{{#while: | {{#if: {{{ {{#var: index }}| }}} | true }} |
<div style="display:none">{{#tag:nowiki|{{{{{ {{#var: index }} }}}}}}}</div>
{{#vardefine: index | {{#expr: {{#var: index }} + 1 }} }} }}
<!-- 需要给依赖的引入补一个判断是否为主空间页面的处理 -->
|#default=<!-- 文档格式 -->
{{#set:|模板名称={{PAGENAME}}|来源=wiki}}{{#vardefine:导入来源|{{#show:帮助:{{PAGENAME}}|?来源}}}}
{{#ifeq:/{{#var:导入来源}}|{{SCRIPTPATH}}||<font color="red">此模板为一键安装导入,不建议手动修改。</font>}}
<div class="row">
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
{{#css:h1, h2, h3, h4, h5, h6 { border-bottom-color: #d0d0d0;} }}
'''模板''':[[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=purge}} {{int:action-purge}}]]
[[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=edit}} {{int:edit}}]]
[[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=history}} {{int:history}}]]<br />
'''文档''':[[[{{{docpage|帮助:{{PAGENAME}}}}}|{{int:view}}]]]
[[{{fullurl:{{{docpage|帮助:{{PAGENAME}}}}}|action=edit}} {{int:edit}}]]
[[{{fullurl:{{{docpage|帮助:{{PAGENAME}}}}}|action=history}} {{int:history}}]]
</div>
<div id="OneKeyInstall" class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<!-- 当前版本 -->
<!-- 手机端安装 -->
</div>
<div class="col-xs-12 visible-xs">
{{#show:帮助:{{PAGENAME}}|?标签}}
</div>
</div>
{{#ifeq:{{NAMESPACE}}|模板|[[分类:模板]][[分类:一键安装]]|}}<!-- 仅对 模板空间 下的页面生效 -->
{{#ifeq:{{NAMESPACE}}|帮助|[[分类:模板帮助]]|}}<!-- 仅对 帮助空间 下的页面生效 -->
}}
</includeonly>
11fd277b4aa93d1f37189ec46fd4b753fd6a4b0d
802
801
2023-04-23T12:02:08Z
13253902
7
导入1个版本
wikitext
text/x-wiki
<includeonly>{{#switch:{{{1|}}}
|信息={{{2}}}:[[{{{2}}}::{{{3}}}]]
|标准={{#ifeq:{{PAGENAME}}|{{ROOTPAGENAME}}|{{#set:|模板提示={{{2}}}}}}}{{#tag:SyntaxHighlight|{{#uescnowiki:{{{2}}}}}|lang={{{lang|html+handlebars}}}}}
|示例=<div>{{#tag:SyntaxHighlight|{{#uescnowiki:{{{2}}}}}|lang={{{lang|html+handlebars}}}}}{{#uesc:{{{2}}}}}</div>
|示例序号={{#vardefineecho: demoindex | {{#expr: {{#var: demoindex }} + 1 }} }}
|作者={{#tag:bilicontributors|{{{2}}}}}
|依赖=<ul>{{#vardefine: index | 2 }}{{#while: | {{#if: {{{ {{#var: index }}| }}} | true }} |
<li>[[{{#vardefineecho:{{{ {{#var: index }} }}}|{{{ {{#var: index }} }}}}}]]</li>
{{#vardefine: index | {{#expr: {{#var: index }} + 1 }} }} }}</ul>
{{#vardefine: index | 2 }}{{#while: | {{#if: {{{ {{#var: index }}| }}} | true }} |
<div style="display:none">{{#tag:nowiki|{{{{{ {{#var: index }} }}}}}}}</div>
{{#vardefine: index | {{#expr: {{#var: index }} + 1 }} }} }}
<!-- 需要给依赖的引入补一个判断是否为主空间页面的处理 -->
|#default=<!-- 文档格式 -->
{{#set:|模板名称={{PAGENAME}}|来源=wiki}}{{#vardefine:导入来源|{{#show:帮助:{{PAGENAME}}|?来源}}}}
{{#ifeq:/{{#var:导入来源}}|{{SCRIPTPATH}}||<font color="red">此模板为一键安装导入,不建议手动修改。</font>}}
<div class="row">
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
{{#css:h1, h2, h3, h4, h5, h6 { border-bottom-color: #d0d0d0;} }}
'''模板''':[[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=purge}} {{int:action-purge}}]]
[[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=edit}} {{int:edit}}]]
[[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=history}} {{int:history}}]]<br />
'''文档''':[[[{{{docpage|帮助:{{PAGENAME}}}}}|{{int:view}}]]]
[[{{fullurl:{{{docpage|帮助:{{PAGENAME}}}}}|action=edit}} {{int:edit}}]]
[[{{fullurl:{{{docpage|帮助:{{PAGENAME}}}}}|action=history}} {{int:history}}]]
</div>
<div id="OneKeyInstall" class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
<!-- 当前版本 -->
<!-- 手机端安装 -->
</div>
<div class="col-xs-12 visible-xs">
{{#show:帮助:{{PAGENAME}}|?标签}}
</div>
</div>
{{#ifeq:{{NAMESPACE}}|模板|[[分类:模板]][[分类:一键安装]]|}}<!-- 仅对 模板空间 下的页面生效 -->
{{#ifeq:{{NAMESPACE}}|帮助|[[分类:模板帮助]]|}}<!-- 仅对 帮助空间 下的页面生效 -->
}}
</includeonly>
11fd277b4aa93d1f37189ec46fd4b753fd6a4b0d
MediaWiki:Common.css
8
17
783
279
2023-04-13T04:16:53Z
13253902
7
css
text/css
/* 这里放置的CSS将应用于所有皮肤 */
body {
background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg");
background-position:center left;
background-size: cover;
background-repeat: no-repeat;
background-attachment:fixed
}
/* 背景半透明 */
.game-bg { background:rgba(255,255,255,0.8527)!important;}
.wiki-header{ background:transparent!important;}
/* 文字不换行 */
.no{white-space:nowrap;}
/* 图片自适应 */
.img-kk {
display: inline-block;
height: auto;
padding: 0px;
max-width:100%;
line-height: 1.42857143;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
/* 一级导航背景透明*/
.wiki-menu-li-1{
background:rgba(0,0,0,0)!important;
}
.title_active{
background:#000!important;
}
/* 一级导航栏搜索高度修正*/
.wiki-header .wiki-nav .nav-search-box{
padding:8px 0;
}
@media (max-width: 768px) {
#simpleSearch1 #searchInput {
padding:0;}
}
/* 首页建造 */
.ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;}
.ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;}
.ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;}
/* SmartClick修正 */
.popover-content{word-break:break-all}
bee7b3c359f0cd7641b21b66e7ce94ee6c4a38c6
MediaWiki:Gadget-Wikiplus-highlight.js
8
356
785
2023-04-22T07:11:19Z
13253902
7
创建页面
javascript
text/javascript
mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight');
279fe01f0293c3a592646c0cb0dffdb092270a04
MediaWiki:Gadget-Wikiplus-highlight
8
357
787
2023-04-22T07:14:08Z
13253902
7
创建页面
wikitext
text/x-wiki
'''Wikiplus-highlight''':Wikiplus 语法高亮插件。
fe01533efc0e16a343e703e40da7a50f0ffece68
用户:13253902/common.js
2
358
788
2023-04-23T11:12:11Z
13253902
7
创建页面,内容为“mw.loader.load('https://cdn.jsdelivr.net/npm/wikiplus-core@latest/dist/Main.js');”
javascript
text/javascript
mw.loader.load('https://cdn.jsdelivr.net/npm/wikiplus-core@latest/dist/Main.js');
20cf7c4efe04e63c1fed67367518c96b43552a02
792
788
2023-04-23T11:55:03Z
13253902
7
// Edit via Wikiplus
javascript
text/javascript
da39a3ee5e6b4b0d3255bfef95601890afd80709
MediaWiki:Gadget-Wikiplus.js
8
359
789
2023-04-23T11:13:12Z
13253902
7
创建页面
javascript
text/javascript
mw.loader.load('https://cdn.jsdelivr.net/npm/wikiplus-core@latest/dist/Main.js');
20cf7c4efe04e63c1fed67367518c96b43552a02
MediaWiki:Gadget-Wikiplus
8
360
790
2023-04-23T11:13:59Z
13253902
7
创建页面
wikitext
text/x-wiki
'''Wikiplus''':Wikiplus 插件。
34a86ad98ee5592a79cfecc39e66bb9471bddcfc
811
790
2023-04-23T12:27:34Z
13253902
7
wikitext
text/x-wiki
'''Wikiplus''':Wikiplus 插件。文档:https://zh.moegirl.org/User:妹空酱/Wikiplus
398293db3db1a41cd1941959e9b589303db58666
模板:图片放大
10
361
794
793
2023-04-23T12:02:08Z
13253902
7
导入1个版本
wikitext
text/x-wiki
<includeonly><div class="showOnBox"><div class="showOn" style="width:{{#if:{{{2|}}}|{{{2|}}}|200px}}">
[[file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|{{#if:{{{2|}}}|{{{2|}}}|200px}}|link=|class=showOnImgSource]]<div>{{{默认文字|}}}</div></div>
<div class="showOnImg" style="top:0; left:0;">[[file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|class=showOnImgBox|{{#if:{{{3|}}}|{{{3|}}}|400px}}|link=]]<div class="showOnText" style="width:{{{3|}}}">{{{放大文字|}}}</div></div></div>{{#if: {{#varexists: 图片放大 }} | | {{#vardefine: 图片放大|1}} {{JS|Amplification}}{{#css:
.showOnBox{
display:inline-block;
margin:5px;
}
.showOnImg {
position: fixed;
display:flex;
background-color: rgba(0,0,0,0.50);
z-index: 1000;
overflow: auto;
height: 100%;
width: 100%;
cursor: zoom-out;
transition: 0.4s;
opacity: 0;
visibility: hidden;
text-align: center;
flex-direction: column;
align-items: center;
justify-content: center;
}
.showOnImgSource {
cursor: zoom-in;
}
.showOn{
display: flex;
flex-direction: column;
align-items: center;
}
.bui-sns-info{
z-index: 0;
}
.showOnImgBox {
text-align: center;
width: auto;
max-height: 100%;
}
.showOnText{
font-size: 16px;
font-weight: bold;
color: #fff;
margin-top: 5px;
}
}} }}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude>
3d0c38db646ba507e8444ed6eab4d5734ceb28e7
MediaWiki:Amplification.js
8
362
796
795
2023-04-23T12:02:08Z
13253902
7
导入1个版本
javascript
text/javascript
$(".showOn").click(function() {
var showElemnet = $(this).next(".showOnImg").clone().appendTo("body");
showElemnet.css({visibility:"visible", opacity: 1})
.click(function() {
$(this).remove();
})
});
e00148868c45fc3d6eb167535733686a2466bfae
模板:JS
10
363
798
797
2023-04-23T12:02:08Z
13253902
7
导入1个版本
wikitext
text/x-wiki
<includeonly>{{ResourceLoader|MediaWiki:{{{1}}}|debug=true}}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude>
3cf20dc867db42608a55326ac2374ec4f309d8a7
模板:ResourceLoader
10
297
800
799
2023-04-23T12:02:08Z
13253902
7
导入1个版本
wikitext
text/x-wiki
<includeonly>{{#if:{{#varexists:防止多次加载ResourceLoaderJS}}||{{#vardefineecho:防止多次加载ResourceLoaderJS|{{#widget:ResourceLoader}}}}}}
<div class="resourceLoader"
style="display:none"
data-is-module="{{{isModule|false}}}"
data-mime="{{{MIME|}}}"
>{{{1|}}}</div>
</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude>
7f41181853194aad9f366dd8da9f7bfd4fe0fe16
帮助:图片放大
12
365
804
803
2023-04-23T12:02:08Z
13253902
7
导入1个版本
wikitext
text/x-wiki
{{模板}}__NOTOC__<div class="row">
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
== 简单说明 ==
{{模板|信息|版本|1.0}}
{{模板|信息|说明|点击图片可放大,兼容手机端阅读}}
== 使用说明 ==
※注意:目前的模板写法不可换行
{{模板|标准|
<esc>{{图片放大|图片名称(png格式)|默认大小(可选/默认200px)|放大后大小(可选/默认400px)|默认文字=默认文字(选填)|放大文字=放大文字(选填)}}</esc>
}}
== 示例 ==
{{模板|示例|
<esc>{{图片放大|Test|200px|800px|默认文字=我是默认文字|放大文字=我是放大文字}}</esc>
}}
</div>
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
== 作者 ==
{{模板|作者|16083703}}
<div class="hidden-xs">
== 标签 ==
{{模板|信息|标签|模板}}
</div>
== 依赖页面 ==
{{模板|依赖
|模板:JS
|模板:ResourceLoader
|模板:图片放大
|mediawiki:Amplification.js
}}
== 更新日志 ==
1.0
</div>
</div>
9599c93aee998c99353d54744b76d47bd3dc7208
MediaWiki:Gadget-SmartClick
8
366
806
2023-04-23T12:14:13Z
13253902
7
创建页面
wikitext
text/x-wiki
'''SmartClick''':Wiki编辑优化插件。文档:https://wiki.biligame.com/umamusume/SmartClick%E6%96%87%E6%A1%A3
6bcaf051b4a91636301e1471391488526359495a
MediaWiki:Gadget-SmartClick.js
8
367
807
2023-04-23T12:15:40Z
13253902
7
创建页面
javascript
text/javascript
mw.loader.load("//wiki.biligame.com/umamusume/index.php?title=MediaWiki:SmartClick.js&action=raw&ctype=text/javascript", "text/javascript");
console.log("SmartClick.js initialized!");
bfaf17f1edc31c3ddb22369bff56db589c2f692d
Widget:ResourceLoader
274
368
810
2023-04-23T12:24:51Z
13253902
7
创建页面
wikitext
text/x-wiki
<includeonly>
<Script>
(window.RLQ=window.RLQ||[]).push([ ["jquery"], function(){
$(function(){
$('.resourceLoader').each(function () {
var $x = $(this);
var text = $.trim($x.text());
if (!text) return;
//加载模块
if ($x.data('isModule') === true)
return mw.loader.load(text);
//自动补充MediaWiki命名空间
var ns = text.match('^.*?:');
if (!ns) text = 'MediaWiki:' + text;
//加载CSS样式表
var mime = ($x.data('mime') || "text/javascript").toLowerCase();
if (mime == "text/css") {
if (text.slice(-4).toLowerCase() !== '.css') text = text + '.css';
//if ($x.data('debug') !== true) text = text + '&debug=false';
return mw.loader.load("//wiki.biligame.com/" + mw.config.get("wgGameName") + "/index.php?title=" + text + "&action=raw&ctype=text/css", "text/css");
}
//加载JS脚本
if (ns && ns[0].toLowerCase() !== 'mediawiki:') {
return console.log('ResourceLoader: 不允许加载MediaWiki以外的js脚本');
}
if (text.slice(-3).toLowerCase() !== '.js') text = text + '.js';
//if ($x.data('debug') !== true) text = text + '&debug=false';
return mw.loader.load("//wiki.biligame.com/" + mw.config.get("wgGameName") + "/index.php?title=" + text + "&action=raw&ctype=text/javascript", "text/javascript");
});
})
}]);
</Script>
</includeonly>
15b1d286727447cc10f2461bcda79a4b4f7fd653
MediaWiki:Gadget-SmartClick
8
366
812
806
2023-04-23T12:29:32Z
13253902
7
wikitext
text/x-wiki
'''SmartClick''':Wiki编辑优化插件。<ref>https://wiki.biligame.com/umamusume/SmartClick%E6%96%87%E6%A1%A3</ref>
c7b41e1916b4f1995deaf40b80d364aab524dde7
822
812
2023-04-23T23:58:00Z
13253902
7
wikitext
text/x-wiki
'''SmartClick''':Wiki编辑优化插件。[https://wiki.biligame.com/umamusume/SmartClick%E6%96%87%E6%A1%A3 来源/文档]
0cc69fd06439dac92fa033fcb704c79f3bdc7745
MediaWiki:Gadget-Wikiplus
8
360
813
811
2023-04-23T12:30:20Z
13253902
7
wikitext
text/x-wiki
'''Wikiplus''':Wikiplus 快速编辑插件。<ref>https://zh.moegirl.org/User:妹空酱/Wikiplus</ref>
04006942b23b243664008e458d8c669284814e81
826
813
2023-04-24T00:20:00Z
13253902
7
wikitext
text/x-wiki
'''Wikiplus''':Wikiplus 快速编辑插件。[https://zh.moegirl.org/User:妹空酱/Wikiplus 来源/文档]
fcfe937b64cd669119c9faadd16f87f8c79abd30
MediaWiki:Gadget-Wikiplus-highlight
8
357
814
787
2023-04-23T12:31:34Z
13253902
7
wikitext
text/x-wiki
'''Wikiplus-highlight''':Wikiplus 语法高亮插件。<ref>https://github.com/bhsd-harry/Wikiplus-highlight</ref>
d01266b1651a59c2fd7f60937c7b36962cf41a9e
825
814
2023-04-24T00:17:19Z
13253902
7
wikitext
text/x-wiki
'''Wikiplus-highlight''':Wikiplus 语法高亮插件。[https://github.com/bhsd-harry/Wikiplus-highlight 来源/文档]
eaa46dceb652fe810a0e68d59d4b014e1fccb8aa
MediaWiki:Gadget-Wikiplus.css
8
369
815
2023-04-23T13:52:47Z
13253902
7
创建页面
css
text/css
#Wikiplus-SR-Intro a{font-size:smaller;}
7990b03ce519646a7abb9ddc9903a596d97b4e75
MediaWiki:Gadgets-definition
8
56
816
809
2023-04-23T13:53:43Z
13253902
7
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js
* SmartClick[ResourceLoader|rights=edit]|SmartClick.js
* Wikiplus[ResourceLoader|rights=edit]|Wikiplus.js|Wikiplus.css
* Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js
==User==
* BilibiliUser[ResourceLoader|default]|BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default]|ScrollToc.js
<!-- * tippy[ResourceLoader|default]|tippy.js -->
716755ce5c49b06bd22722bdf3bf1fd29b5f0ca8
819
816
2023-04-23T14:02:36Z
13253902
7
// Edit via Wikiplus
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit] | BwikiBatchEditor.js
* SmartClick[ResourceLoader|rights=edit] | SmartClick.js
* Wikiplus[ResourceLoader|rights=edit] | Wikiplus.js | Wikiplus.css
* Wikiplus-highlight[ResourceLoader|rights=edit] | Wikiplus-highlight.js
==User==
* BilibiliUser[ResourceLoader|default] | BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default] | ScrollToc.js
<!-- * tippy[ResourceLoader|default] | tippy.js -->
2b087f3707c47b04b7f9c64e695c14ca83e45990
821
819
2023-04-23T14:06:17Z
13253902
7
// Edit via Wikiplus
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit] | BwikiBatchEditor.js
* SmartClick[ResourceLoader|rights=edit] | SmartClick.js
* Wikiplus[ResourceLoader|rights=edit] | Wikiplus.js | Wikiplus.css
* Wikiplus-highlight[ResourceLoader|rights=edit] | Wikiplus-highlight.js | Wikiplus-highlight.css
==User==
* BilibiliUser[ResourceLoader|default] | BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default] | ScrollToc.js
<!-- * tippy[ResourceLoader|default] | tippy.js -->
a4297deeadbaa9c62f7906b0305fabc3cd4c2746
824
821
2023-04-24T00:00:36Z
13253902
7
wikitext
text/x-wiki
==Editing==
* BwikiBatchEditor[ResourceLoader|rights=edit] | BwikiBatchEditor.js
* SmartClick[ResourceLoader|rights=edit] | SmartClick.js | SmartClick.css
* Wikiplus[ResourceLoader|rights=edit] | Wikiplus.js | Wikiplus.css
* Wikiplus-highlight[ResourceLoader|rights=edit] | Wikiplus-highlight.js | Wikiplus-highlight.css
==User==
* BilibiliUser[ResourceLoader|default] | BilibiliUser.js
==System==
* ScrollToc[ResourceLoader|default] | ScrollToc.js
<!-- * tippy[ResourceLoader|default] | tippy.js -->
ba28a6cc025b1d98c450b28fa33c05c5a0f07caf
常用编辑
0
13
817
16
2023-04-23T13:56:19Z
13253902
7
wikitext
text/x-wiki
__TOC__
==整站==
{| class="wikitable text-center" width=100%
|-
| width=25% | [[https://wiki.biligame.com/township/index.php?title=首页&action=submit 首页编辑]]
| width=25% | [[https://wiki.biligame.com/township/MediaWiki:Sidebar 整站导航编辑]]
| width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.css 整站CSS编辑]]
| width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.js 整站JS编辑]]
|-
| [[https://wiki.biligame.com/township/index.php?title=首页&action=purge 首页刷新]]
|
|
|
|}
==新增==
{| class="wikitable text-center" width=100%
|-
! width=25% |
! width=25% |
! width=25% |
! width=25% |
|-
|
|
|
|
|-
|<inputbox>
type=create
preload=
placeholder=
width=20
break=no
</inputbox>
| <inputbox>
type=create
preload=
placeholder=
width=20
break=no
</inputbox>
|
|
|}
====
{| class="wikitable text-center" width=100%
|-
| width=25% |
| width=25% |
| width=25% |
| width=25% |
|-
|
|
|
|
|}{{#css:
#Wikiplus-SR-Intro a{font-size:smaller;}
}}
037d6356e97f14a5f56e0f2db7b35f083b1c079f
818
817
2023-04-23T13:59:42Z
13253902
7
// Edit via Wikiplus
wikitext
text/x-wiki
__TOC__
==整站==
{| class="wikitable text-center" width=100%
|-
| width=25% | [[https://wiki.biligame.com/township/index.php?title=首页&action=submit 首页编辑]]
| width=25% | [[https://wiki.biligame.com/township/MediaWiki:Sidebar 整站导航编辑]]
| width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.css 整站CSS编辑]]
| width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.js 整站JS编辑]]
|-
| [[https://wiki.biligame.com/township/index.php?title=首页&action=purge 首页刷新]]
|
|
|
|}
==新增==
{| class="wikitable text-center" width=100%
|-
! width=25% |
! width=25% |
! width=25% |
! width=25% |
|-
|
|
|
|
|-
|<inputbox>
type=create
preload=
placeholder=
width=20
break=no
</inputbox>
| <inputbox>
type=create
preload=
placeholder=
width=20
break=no
</inputbox>
|
|
|}
====
{| class="wikitable text-center" width=100%
|-
| width=25% |
| width=25% |
| width=25% |
| width=25% |
|-
|
|
|
|
|}
1f0903a0186682cc5db21468d7ffaf4856a88963
MediaWiki:Gadget-Wikiplus-highlight.css
8
370
820
2023-04-23T14:05:35Z
13253902
7
创建页面
css
text/css
#wphl-settings a{font-size:smaller;}
2bb2efaad98939a6404f2b2b2cad151a6e1cceb1
MediaWiki:Gadget-SmartClick.css
8
371
823
2023-04-23T23:59:24Z
13253902
7
创建页面
css
text/css
/* SmartClick修正 */
.popover-content{word-break:break-all}
e7280991a21d58215cb35bfe19e61e4c8e724d9f
MediaWiki:Gadget-BwikiBatchEditor
8
57
827
148
2023-04-25T13:08:15Z
13253902
7
wikitext
text/x-wiki
'''BwikiBatchEditor''':BWIKI批量页面编辑器。[https://wiki.biligame.com/factorio/%E7%94%A8%E6%88%B7:123855714/BwikiBatchEditor 来源/文档]
62a908d9333615e758f328549132aad889aaebaf
MediaWiki:Gadget-BilibiliUser
8
277
828
503
2023-04-25T13:09:32Z
13253902
7
wikitext
text/x-wiki
'''BWIKI用户标签扩展工具''':自动展示用户信息。[https://wiki.biligame.com/wiki/%E7%94%A8%E6%88%B7:123855714/BilibiliUser 来源/文档]
8e03cadfc38a62a4a278cf34fec038224fd021c0
MediaWiki:Gadget-ScrollToc
8
288
829
577
2023-04-25T13:12:10Z
13253902
7
wikitext
text/x-wiki
'''ScrollToc''':滚动监听目录插件,仅在电脑端生效,移动端无效。[https://wiki.biligame.com/wiki/%E7%94%A8%E6%88%B7:123855714/ScrollToc 来源/文档]
d0417479646018fb978cf023c032599364ab38ad
房屋/光明屋
0
81
830
270
2023-05-07T13:34:15Z
13253902
7
13253902移动页面[[光明屋]]至[[房屋/光明屋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=光明屋
|等级=50、51、64、84<!-- 用顿号隔开 -->
|金币=7500
|人口=150
|经验=150
|时间(天)=1
|时间(时)=6
|时间(分)=
|时间(秒)=
|占地=2×1
}}
e8415353b04f8286f90a75fabb1db84a5ec7f57e
房屋/一厅一室房
0
68
831
259
2023-05-07T13:34:15Z
13253902
7
13253902移动页面[[一厅一室房]]至[[房屋/一厅一室房]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=一厅一室房
|等级=24、25、25、26<!-- 用顿号隔开 -->
|金币=540
|人口=60
|经验=60
|时间(天)=
|时间(时)=7
|时间(分)=
|时间(秒)=
|占地=1×1
}}
f959eabfeb7705644897f061d2929a41901c686d
房屋/三角顶小屋
0
92
832
254
2023-05-07T13:34:15Z
13253902
7
13253902移动页面[[三角顶小屋]]至[[房屋/三角顶小屋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=三角顶小屋
|等级=12、13、16、17<!-- 用顿号隔开 -->
|金币=105
|人口=35
|经验=35
|时间(天)=
|时间(时)=2
|时间(分)=
|时间(秒)=
|占地=1×1
}}
0b6aed8292afe2a6ba863727e06ffcce0d3fc590
房屋/公寓大楼
0
77
833
265
2023-05-07T13:34:15Z
13253902
7
13253902移动页面[[公寓大楼]]至[[房屋/公寓大楼]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=公寓大楼
|等级=34、35、36、41、43、46<!-- 用顿号隔开 -->
|金币=2250
|人口=90
|经验=90
|时间(天)=
|时间(时)=20
|时间(分)=
|时间(秒)=
|占地=1×2
}}
19c94fbe28344be2a43c3fa7242a51b2fa3ae089
房屋/公寓综合楼
0
279
834
542
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[公寓综合楼]]至[[房屋/公寓综合楼]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=公寓综合楼
|等级=86、90<!-- 用顿号隔开 -->
|金币=46400
|人口=580
|经验=580
|时间(天)=1
|时间(时)=18
|时间(分)=
|时间(秒)=
|占地=1×2
}}
b87b1408870fff6bad1d0f2339ee842f2208ae47
房屋/原木屋
0
94
835
275
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[原木屋]]至[[房屋/原木屋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=原木屋
|等级=62、64、66、80<!-- 用顿号隔开 -->
|金币=19000
|人口=380
|经验=380
|时间(天)=1
|时间(时)=12
|时间(分)=
|时间(秒)=
|占地=1×2
}}
6bbaf277885b8425e5366667996afc32ea94b37d
房屋/共管公寓(90)
0
283
836
565
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[共管公寓(90)]]至[[房屋/共管公寓(90)]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=90<!-- 用顿号隔开 -->
|金币=56000
|人口=700
|经验=700
|时间(天)=1
|时间(时)=20
|时间(分)=
|时间(秒)=
|占地=1×2
}}
76803c9b048c304cbdedad67cad7b052a2a8df0d
房屋/共管公寓
0
75
837
547
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[共管公寓]]至[[房屋/共管公寓]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=32、33、36、38、40、42<!-- 用顿号隔开 -->
|金币=1700
|人口=85
|经验=85
|时间(天)=
|时间(时)=18
|时间(分)=
|时间(秒)=
|占地=1×2
}}
d1bb5855503fb8d8199fa5a7afeb37ffc534aace
房屋/农舍
0
66
838
253
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[农舍]]至[[房屋/农舍]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=农舍
|等级=10、11、15<!-- 用顿号隔开 -->
|金币=60
|人口=30
|经验=30
|时间(天)=
|时间(时)=1
|时间(分)=30
|时间(秒)=
|占地=1×1
}}
4091d4edae2174be77c4140851421512f7e69c03
房屋/匠心小栋
0
69
839
256
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[匠心小栋]]至[[房屋/匠心小栋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=匠心小栋
|等级=17、18、19、19、20<!-- 用顿号隔开 -->
|金币=225
|人口=45
|经验=45
|时间(天)=
|时间(时)=4
|时间(分)=
|时间(秒)=
|占地=1×1
}}
69a8f24db070a578571b05344940eeee67897545
房屋/别墅
0
91
840
252
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[别墅]]至[[房屋/别墅]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=别墅
|等级=8、9、13、14<!-- 用顿号隔开 -->
|金币=25
|人口=25
|经验=25
|时间(天)=
|时间(时)=1
|时间(分)=
|时间(秒)=
|占地=1×1
}}
05eb11375c9f1b40053edb79dd42f642f85fc697
房屋/双尖塔楼
0
86
841
276
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[双尖塔楼]]至[[房屋/双尖塔楼]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=双尖塔楼
|等级=68、70、84<!-- 用顿号隔开 -->
|金币=21000
|人口=420
|经验=420
|时间(天)=1
|时间(时)=12
|时间(分)=
|时间(秒)=
|占地=1×2
}}
0fa86dbfb55d299189a13e4852537950756565f0
房屋/合租房
0
76
842
266
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[合租房]]至[[房屋/合租房]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=合租房
|等级=37、38、45、47、58<!-- 用顿号隔开 -->
|金币=3000
|人口=100
|经验=100
|时间(天)=
|时间(时)=22
|时间(分)=
|时间(秒)=
|占地=1×2
}}
c4cd36f47a00c4131b77923b1939f6b50570f195
房屋/双层楼房
0
93
843
257
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[双层楼房]]至[[房屋/双层楼房]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=双层楼房
|等级=20、21、21、22<!-- 用顿号隔开 -->
|金币=300
|人口=50
|经验=50
|时间(天)=
|时间(时)=6
|时间(分)=
|时间(秒)=
|占地=1×1
}}
bcb13568dfa00fe5b00e8fd193301a6813217770
房屋/圆木小屋
0
83
844
272
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[圆木小屋]]至[[房屋/圆木小屋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=圆木小屋
|等级=54、55、70、72<!-- 用顿号隔开 -->
|金币=11500
|人口=230
|经验=230
|时间(天)=1
|时间(时)=8
|时间(分)=
|时间(秒)=
|占地=1×2
}}
ecf54634d70a7d4c2c57e923bf831a1c43641614
房屋/商住综合楼
0
88
845
277
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[商住综合楼]]至[[房屋/商住综合楼]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=商住综合楼
|等级=72、74、76、82<!-- 用顿号隔开 -->
|金币=27600
|人口=460
|经验=460
|时间(天)=1
|时间(时)=16
|时间(分)=
|时间(秒)=
|占地=1×2
}}
a4f3e258b43e38c5cb69616aeed931959c5a72b7
房屋/复式公寓
0
71
846
260
2023-05-07T13:34:16Z
13253902
7
13253902移动页面[[复式公寓]]至[[房屋/复式公寓]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=复式公寓
|等级=26、27、27、28、29<!-- 用顿号隔开 -->
|金币=715
|人口=65
|经验=65
|时间(天)=
|时间(时)=9
|时间(分)=
|时间(秒)=
|占地=1×1
}}
9dc6e9539ad73fb71e695676f3664770e8244d5d
房屋/带花园的高层
0
78
847
267
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[带花园的高层]]至[[房屋/带花园的高层]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=带花园的高层
|等级=39、40、41、48、62<!-- 用顿号隔开 -->
|金币=3850
|人口=110
|经验=110
|时间(天)=1
|时间(时)=
|时间(分)=
|时间(秒)=
|占地=1×2
}}
81f5931dd514b70647abcafaa2291665cb86b945
房屋/小屋
0
10
848
111
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[小屋]]至[[房屋/小屋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=小屋
|等级=4、4、4、5 <!-- 用顿号隔开 -->
|金币=5
|人口=5
|经验=5
|时间(天)=
|时间(时)=
|时间(分)=1
|时间(秒)=
|占地=1×1
}}
aa5cbf6dfdfaa8dcf8a88f9eadac7d7b6ee011db
房屋/折顶式小屋
0
62
849
255
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[折顶式小屋]]至[[房屋/折顶式小屋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=折顶式小屋
|等级=14、15、16、18<!-- 用顿号隔开 -->
|金币=160
|人口=40
|经验=40
|时间(天)=
|时间(时)=3
|时间(分)=
|时间(秒)=
|占地=1×1
}}
af70904016d34703defd9f5a8efdff2bcab5d750
房屋/带泳池的高层
0
282
850
546
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[带泳池的高层]]至[[房屋/带泳池的高层]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=带泳池的高层
|等级=92<!-- 用顿号隔开 -->
|金币=66000
|人口=820
|经验=820
|时间(天)=1
|时间(时)=22
|时间(分)=
|时间(秒)=
|占地=1×2
}}
4ba40e9dd15d9386b78c90600532e9ab151084bc
房屋/带阳台的房子
0
280
851
543
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[带阳台的房子]]至[[房屋/带阳台的房子]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=带阳台的房子
|等级=88<!-- 用顿号隔开 -->
|金币=51200
|人口=640
|经验=640
|时间(天)=1
|时间(时)=18
|时间(分)=
|时间(秒)=
|占地=1×2
}}
5c01d245b2fb4536f6ef7654fbe67c2078b4cead
房屋/带阁楼的高层建筑
0
79
852
269
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[带阁楼的高层建筑]]至[[房屋/带阁楼的高层建筑]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=带阁楼的高层建筑
|等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 -->
|金币=6300
|人口=140
|经验=140
|时间(天)=1
|时间(时)=4
|时间(分)=
|时间(秒)=
|占地=1×2
}}
99820036334f81c310cbbc8f7dec0306dadefb3f
房屋/普通高层
0
80
853
268
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[普通高层]]至[[房屋/普通高层]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=普通高层
|等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 -->
|金币=4800
|人口=120
|经验=120
|时间(天)=1
|时间(时)=2
|时间(分)=
|时间(秒)=
|占地=1×2
}}
0cc211115b21b814e5beed4e9016d682e7c94825
房屋/摩登高层
0
84
854
273
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[摩登高层]]至[[房屋/摩登高层]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=摩登高层
|等级=56、57、74<!-- 用顿号隔开 -->
|金币=13500
|人口=270
|经验=270
|时间(天)=1
|时间(时)=10
|时间(分)=
|时间(秒)=
|占地=1×2
}}
7be52e5ab632c35b68a9de10bb27a7802a7fd37c
房屋/牧人小舍
0
90
855
250
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[牧人小舍]]至[[房屋/牧人小舍]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=牧人小舍
|等级=1、1、5、6、9、10<!-- 用顿号隔开 -->
|金币=15
|人口=15
|经验=15
|时间(天)=
|时间(时)=
|时间(分)=20
|时间(秒)=
|占地=1×1
}}
29aee94bc55ac21a87a803f7cf97e6037ae09205
房屋/海螺屋
0
61
856
251
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[海螺屋]]至[[房屋/海螺屋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=海螺屋
|等级=1、7、11、12<!-- 用顿号隔开 -->
|金币=20
|人口=20
|经验=20
|时间(天)=
|时间(时)=
|时间(分)=30
|时间(秒)=
|占地=1×1
}}
65149da49f1cb10bba03a86606385496e88a7255
房屋/瓷砖高层
0
82
857
271
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[瓷砖高层]]至[[房屋/瓷砖高层]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=瓷砖高层
|等级=52、53、66、68<!-- 用顿号隔开 -->
|金币=9500
|人口=190
|经验=190
|时间(天)=1
|时间(时)=8
|时间(分)=
|时间(秒)=
|占地=1×2
}}
92f5a4a8cc200542c8dbbe80162a8255aa0985c6
房屋/独户住房
0
89
858
278
2023-05-07T13:34:17Z
13253902
7
13253902移动页面[[独户住房]]至[[房屋/独户住房]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=独户住房
|等级=78、80、82、84<!-- 用顿号隔开 -->
|金币=36400
|人口=520
|经验=520
|时间(天)=1
|时间(时)=16
|时间(分)=
|时间(秒)=
|占地=2×2
}}
28b86b144abc9ecc0424bb1e9ecb27e9bfb0b97b
房屋/维多利亚联排别墅
0
73
859
262
2023-05-07T13:34:18Z
13253902
7
13253902移动页面[[维多利亚联排别墅]]至[[房屋/维多利亚联排别墅]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=维多利亚联排别墅
|等级=29、30、33、34、44<!-- 用顿号隔开 -->
|金币=1200
|人口=75
|经验=75
|时间(天)=
|时间(时)=12
|时间(分)=
|时间(秒)=
|占地=1×2
}}
2665741fc4bce27223bbfb55a5778b4876e48f58
房屋/科德角式小屋
0
12
860
115
2023-05-07T13:34:18Z
13253902
7
13253902移动页面[[科德角式小屋]]至[[房屋/科德角式小屋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=科德角式小屋
|等级=1、5、6、7、8 <!-- 用顿号隔开 -->
|金币=10
|人口=10
|经验=10
|时间(天)=
|时间(时)=
|时间(分)=10
|时间(秒)=
|占地=1×1
}}
f5d24e37cf53b82e3f2052d9916d21bfa46556bf
房屋/美式四角楼
0
67
861
258
2023-05-07T13:34:18Z
13253902
7
13253902移动页面[[美式四角楼]]至[[房屋/美式四角楼]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=美式四角楼
|等级=22、23、23、24<!-- 用顿号隔开 -->
|金币=385
|人口=55
|经验=55
|时间(天)=
|时间(时)=7
|时间(分)=
|时间(秒)=
|占地=1×1
}}
b05b39fc7c03dc225780178db67d76cbb7a7d0f1
房屋/花园式公寓
0
74
862
263
2023-05-07T13:34:18Z
13253902
7
13253902移动页面[[花园式公寓]]至[[房屋/花园式公寓]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=花园式公寓
|等级=31、35、37、39<!-- 用顿号隔开 -->
|金币=1440
|人口=80
|经验=80
|时间(天)=
|时间(时)=16
|时间(分)=
|时间(秒)=
|占地=1×2
}}
40609a3d274be806a09c541a80e122d00905ce85
884
862
2023-05-07T14:46:08Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=花园式公寓
|等级=31、35、37、39
|金币=1440
|人口=80
|经验=80
|占地=1×2
|时间=960
}}
dd8ac8f9939662ba1977a4950a579a3d02ce20c7
房屋/联排别墅
0
72
863
261
2023-05-07T13:34:18Z
13253902
7
13253902移动页面[[联排别墅]]至[[房屋/联排别墅]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=联排别墅
|等级=28、30、31、32<!-- 用顿号隔开 -->
|金币=910
|人口=70
|经验=70
|时间(天)=
|时间(时)=10
|时间(分)=
|时间(秒)=
|占地=1×1
}}
5b0c63405f9ea9bf49bc388de7b4367de7e1a2dd
882
863
2023-05-07T14:46:04Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=联排别墅
|等级=28、30、31、32
|金币=910
|人口=70
|经验=70
|占地=1×1
|时间=600
}}
d3a7deeec76e4d2527f3251a67297fa18325e743
房屋/老房屋
0
85
864
274
2023-05-07T13:34:18Z
13253902
7
13253902移动页面[[老房屋]]至[[房屋/老房屋]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=老房屋
|等级=58、59、60、76、78<!-- 用顿号隔开 -->
|金币=16500
|人口=330
|经验=330
|时间(天)=1
|时间(时)=10
|时间(分)=
|时间(秒)=
|占地=1×2
}}
e9a42edbbef59e0ba26808df5b142353f0ace3e1
895
864
2023-05-07T14:46:33Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=老房屋
|等级=58、59、60、76、78
|金币=16500
|人口=330
|经验=330
|占地=1×2
|时间=2040
}}
6aadb9b219566b9e3d4fcc0798b995a132dc8897
房屋/高层建筑
0
281
865
545
2023-05-07T13:34:18Z
13253902
7
13253902移动页面[[高层建筑]]至[[房屋/高层建筑]],不留重定向:移动房屋
wikitext
text/x-wiki
{{房屋
|中文=高层建筑
|等级=92<!-- 用顿号隔开 -->
|金币=61000
|人口=760
|经验=760
|时间(天)=1
|时间(时)=20
|时间(分)=
|时间(秒)=
|占地=1×2
}}
c4b50bda3ed316c9bedb04345f7fff298135f287
903
865
2023-05-07T14:46:45Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=高层建筑
|等级=92
|金币=61000
|人口=760
|经验=760
|占地=1×2
|时间=2640
}}
3314e8d19561e9cc6f4e5b554f2903609c0010aa
分类:房屋
14
372
866
2023-05-07T13:35:23Z
13253902
7
创建页面
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
模板:房屋表
10
24
867
540
2023-05-07T13:37:25Z
13253902
7
wikitext
text/x-wiki
<includeonly>|-
|[[文件:{{{2|}}}.png|100px|class=img-kk|link=房屋/{{{2|}}}]]<br>[[{{{1|}}}|{{{2|}}}]]
| style="font-size:2em;"| {{{3|}}}
| style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}
| style="font-size:2vw;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{5|}}}
| style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}}
</includeonly>
087968facf74d7724b8143e3f1092a31340b5631
906
867
2023-05-07T14:58:07Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;"
! 房屋
! 最大数量
! 所需金币
! 获得人口
! 建造时间
{{#ask:[[分类:房屋]]
|?中文
|?最大数量
|?金币
|?人口
|?经验
|?时间
|?占地
|named args=1
|link=none
|sort=金币
|order=asc
|headers=hide
|template=房屋表
|format=template
|limit=3
|searchlabel=
}}
|}</noinclude><includeonly>|-
|[[文件:{{{中文|}}}.png|100px|class=img-kk|link=房屋/{{{中文|}}}]]<br>[[{{{1|}}}|{{{中文|}}}]]
| style="font-size:2em;"| {{{最大数量|}}}
| style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:2vw;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{转换时间|{{{时间|}}}}}
</includeonly>
cb7234ba5e2dfd574dd2cdf59741912065bb1f95
模板:转换时间
10
373
868
2023-05-07T14:29:42Z
13253902
7
创建页面
wikitext
text/x-wiki
<noinclude>{{转换时间|2430.05}}</noinclude><includeonly><!--
-->{{#vardefine:天|{{#expr:{{{1|}}}/24/60}}}}<!--
-->{{#vardefine:时|{{#expr:({{{1|}}}-floor({{#var:天}})*24*60)/60}}}}<!--
-->{{#vardefine:分|{{#expr:({{{1|}}}-floor({{#var:天}})*24*60-floor({{#var:时}})*60)}}}}<!--
-->{{#vardefine:秒|{{#expr:({{#var:分}}-floor({{#var:分}}))*60}}}}<!--
-->{{#ifeq:{{#expr:floor({{#var:天}})}}|0||{{#expr:floor({{#var:天}})}}天}}<!--
-->{{#ifeq:{{#expr:floor({{#var:时}})}}|0||{{#expr:floor({{#var:时}})}}时}}<!--
-->{{#ifeq:{{#expr:floor({{#var:分}})}}|0||{{#expr:floor({{#var:分}})}}分}}<!--
-->{{#ifeq:{{#expr:floor({{#var:秒}})}}|0||{{#expr:floor({{#var:秒}})}}秒}}<!--
--></includeonly>
0dffb59bc459e69f126be2ae850d4b8a25d3793f
房屋/小屋
0
10
869
848
2023-05-07T14:34:37Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=小屋
|等级=4、4、4、5
|金币=5
|人口=5
|经验=5
|占地=1×1
|时间=1
}}
e661dd77d1776bdc287f4e1fa41d7731641e67a9
房屋/科德角式小屋
0
12
870
860
2023-05-07T14:34:40Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=科德角式小屋
|等级=1、5、6、7、8
|金币=10
|人口=10
|经验=10
|占地=1×1
|时间=10
}}
dd2311ce7f05aa22a48e39455491e0d11b0c278c
房屋/牧人小舍
0
90
871
855
2023-05-07T14:45:46Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=牧人小舍
|等级=1、1、5、6、9、10
|金币=15
|人口=15
|经验=15
|占地=1×1
|时间=20
}}
62512e1d300452020bbb24202bf4fc475ba8438a
房屋/海螺屋
0
61
872
856
2023-05-07T14:45:49Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=海螺屋
|等级=1、7、11、12
|金币=20
|人口=20
|经验=20
|占地=1×1
|时间=30
}}
d55190bd3e08a283b8c9141fcdca93a9062c7527
房屋/别墅
0
91
873
840
2023-05-07T14:45:51Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=别墅
|等级=8、9、13、14
|金币=25
|人口=25
|经验=25
|占地=1×1
|时间=60
}}
0ee04390ae4bf744f1aa44f397fb331d1bd4c012
房屋/农舍
0
66
874
838
2023-05-07T14:45:52Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=农舍
|等级=10、11、15
|金币=60
|人口=30
|经验=30
|占地=1×1
|时间=90
}}
3bbe65c14c9d027e4da9eb694e71d5f784d4bf84
房屋/三角顶小屋
0
92
875
832
2023-05-07T14:45:53Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=三角顶小屋
|等级=12、13、16、17
|金币=105
|人口=35
|经验=35
|占地=1×1
|时间=120
}}
80c7eaec1eb445b81856aec783443d235a2a1ecd
房屋/折顶式小屋
0
62
876
849
2023-05-07T14:45:54Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=折顶式小屋
|等级=14、15、16、18
|金币=160
|人口=40
|经验=40
|占地=1×1
|时间=180
}}
1c797af713e48a9b2dbd32d36de802a0c4805872
房屋/匠心小栋
0
69
877
839
2023-05-07T14:45:55Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=匠心小栋
|等级=17、18、19、19、20
|金币=225
|人口=45
|经验=45
|占地=1×1
|时间=240
}}
6bb8ea5f8b9dfe91bec5426f1aaa708745969147
房屋/双层楼房
0
93
878
843
2023-05-07T14:45:55Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=双层楼房
|等级=20、21、21、22
|金币=300
|人口=50
|经验=50
|占地=1×1
|时间=360
}}
4bef765cf5487f6a3e357392b9d0f69e27e163b5
房屋/美式四角楼
0
67
879
861
2023-05-07T14:45:58Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=美式四角楼
|等级=22、23、23、24
|金币=385
|人口=55
|经验=55
|占地=1×1
|时间=420
}}
2af9b093ea3a8681c4d25cc13f1563ad6a7dd1a4
房屋/一厅一室房
0
68
880
831
2023-05-07T14:46:00Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=一厅一室房
|等级=24、25、25、26
|金币=540
|人口=60
|经验=60
|占地=1×1
|时间=480
}}
49504e585aaf9b67fc8166f8dc7c8095007dadb2
房屋/复式公寓
0
71
881
846
2023-05-07T14:46:02Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=复式公寓
|等级=26、27、27、28、29
|金币=715
|人口=65
|经验=65
|占地=1×1
|时间=540
}}
1c36efaa656185e25086525c230a0a47caecf014
房屋/维多利亚联排别墅
0
73
883
859
2023-05-07T14:46:06Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=维多利亚联排别墅
|等级=29、30、33、34、44
|金币=1200
|人口=75
|经验=75
|占地=1×2
|时间=720
}}
13a4f98cda580b7e13fdf49e68b3a52627c12466
房屋/共管公寓
0
75
885
837
2023-05-07T14:46:10Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=32、33、36、38、40、42
|金币=1700
|人口=85
|经验=85
|占地=1×2
|时间=1080
}}
c3d4b639876dee52acd2c0b465405d5fccada268
房屋/公寓大楼
0
77
886
833
2023-05-07T14:46:13Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=公寓大楼
|等级=34、35、36、41、43、46
|金币=2250
|人口=90
|经验=90
|占地=1×2
|时间=1200
}}
b3363084fd72de948cdb3c5a025674aacd08c4b6
房屋/合租房
0
76
887
842
2023-05-07T14:46:15Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=合租房
|等级=37、38、45、47、58
|金币=3000
|人口=100
|经验=100
|占地=1×2
|时间=1320
}}
66b7ef57726d5fd4ebc16bfef422c53ff9e90160
房屋/带花园的高层
0
78
888
847
2023-05-07T14:46:17Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=带花园的高层
|等级=39、40、41、48、62
|金币=3850
|人口=110
|经验=110
|占地=1×2
|时间=1440
}}
ede0a6516953aab7bf6442d3abfdd2cbc658dd86
房屋/普通高层
0
80
889
853
2023-05-07T14:46:19Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=普通高层
|等级=42、43、45、49、50、52、54、56、59
|金币=4800
|人口=120
|经验=120
|占地=1×2
|时间=1560
}}
6ed9a22c3aec36c06d9b5ea842951e1db5740ec3
房屋/带阁楼的高层建筑
0
79
890
852
2023-05-07T14:46:21Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=带阁楼的高层建筑
|等级=44、46、47、48、49、51、53、55、57、60
|金币=6300
|人口=140
|经验=140
|占地=1×2
|时间=1680
}}
daee660e72459baa5fb859a3939850e186575949
房屋/光明屋
0
81
891
830
2023-05-07T14:46:23Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=光明屋
|等级=50、51、64、84
|金币=7500
|人口=150
|经验=150
|占地=2×1
|时间=1800
}}
8f20b4b8e8605767ab52a54cee56649faa85fb6f
房屋/瓷砖高层
0
82
892
857
2023-05-07T14:46:26Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=瓷砖高层
|等级=52、53、66、68
|金币=9500
|人口=190
|经验=190
|占地=1×2
|时间=1920
}}
a8e839830631be76706c14771c6606709c217b52
房屋/圆木小屋
0
83
893
844
2023-05-07T14:46:28Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=圆木小屋
|等级=54、55、70、72
|金币=11500
|人口=230
|经验=230
|占地=1×2
|时间=1920
}}
5c9f42bad248f5cf9f544577e2a0d164e8280fc4
房屋/摩登高层
0
84
894
854
2023-05-07T14:46:31Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=摩登高层
|等级=56、57、74
|金币=13500
|人口=270
|经验=270
|占地=1×2
|时间=2040
}}
f97b95425a35e35c5b73d3146eaccbf29e2d121c
房屋/原木屋
0
94
896
835
2023-05-07T14:46:35Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=原木屋
|等级=62、64、66、80
|金币=19000
|人口=380
|经验=380
|占地=1×2
|时间=2160
}}
44ee15b679563ab844343687e0b366737d9c98d3
房屋/双尖塔楼
0
86
897
841
2023-05-07T14:46:37Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=双尖塔楼
|等级=68、70、84
|金币=21000
|人口=420
|经验=420
|占地=1×2
|时间=2160
}}
dc0d5c606061e5e90a5fb248121d914e4ab8f00e
房屋/商住综合楼
0
88
898
845
2023-05-07T14:46:39Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=商住综合楼
|等级=72、74、76、82
|金币=27600
|人口=460
|经验=460
|占地=1×2
|时间=2400
}}
3052daba6d081bb221682795e3e7557799e5b16c
房屋/独户住房
0
89
899
858
2023-05-07T14:46:41Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=独户住房
|等级=78、80、82、84
|金币=36400
|人口=520
|经验=520
|占地=2×2
|时间=2400
}}
75ee3304afdd650965bfc6a47faa96dc10c5a8ca
房屋/公寓综合楼
0
279
900
834
2023-05-07T14:46:43Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=公寓综合楼
|等级=86、90
|金币=46400
|人口=580
|经验=580
|占地=1×2
|时间=2520
}}
56bd819a1c3b141c36b176bc095a24575b984d5b
房屋/带阳台的房子
0
280
901
851
2023-05-07T14:46:44Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=带阳台的房子
|等级=88
|金币=51200
|人口=640
|经验=640
|占地=1×2
|时间=2520
}}
49b0839764c576a303ceb9a6289f3fb8061249f9
房屋/共管公寓(90)
0
283
902
836
2023-05-07T14:46:44Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=90
|金币=56000
|人口=700
|经验=700
|占地=1×2
|时间=2640
}}
0387e79f78a40c31fa7aa47ffb5730f853e4361d
房屋/带泳池的高层
0
282
904
850
2023-05-07T14:46:46Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=带泳池的高层
|等级=92
|金币=66000
|人口=820
|经验=820
|占地=1×2
|时间=2760
}}
65a7690978b43489246294536280189826034eee
模板:房屋
10
11
905
571
2023-05-07T14:56:25Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间={{{时间|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币
! width=20%|建造时间
! width=20%|占地面积
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间|}}}|{{转换时间|{{{时间|}}}}}|}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! width=20%|获得人口
! width=20%|获得经验
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br>
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
所需金币:{{{金币|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:房屋]]</includeonly>
e356fb2911ef56fe7737a213107298d54bf7efea
房屋
0
23
907
541
2023-05-07T14:58:35Z
13253902
7
wikitext
text/x-wiki
{| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;"
! 房屋
! 最大数量
! 所需金币
! 获得人口
! 建造时间
{{#ask:[[分类:房屋]]
|?中文
|?最大数量
|?金币
|?人口
|?经验
|?时间
|?占地
|named args=1
|link=none
|sort=金币
|order=asc
|headers=hide
|template=房屋表
|format=template
|limit=1000
}}
|}
083ab4bddd85abab1986705d507bdb39875ec121
MediaWiki:Common.js
8
33
908
808
2023-05-07T14:59:25Z
13253902
7
// Edit via Wikiplus
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/*加载Bikit*/
try { mw.loader.load('//wiki.biligame.com/wiki/MediaWiki:Bikit.js?action=raw&ctype=text/javascript');} catch(e) {}
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
/* 来源:碧蓝航线WIKI*/
mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript");
d950a221a03bcc63410dce17542945bfb596e009
909
908
2023-05-07T15:02:41Z
13253902
7
javascript
text/javascript
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/*加载Bikit*/
try { mw.loader.load('//wiki.biligame.com/wiki/MediaWiki:Bikit.js?action=raw&ctype=text/javascript');} catch(e) {}
/* 技术处理外链 */
/* 来源:异星工厂WIKI*/
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["youtu","twitter","wikipedia","facebook"];
var status=false;
key.forEach(function(k){
status=url.indexOf(k)>=0||status;
});
url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1");
$(this).attr("href",url);
}
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
/* 来源:碧蓝航线WIKI*/
mw.loader.load("//wiki.biligame.com/township/MediaWiki:Gadget-tippy.js?action=raw&ctype=text/javascript", "text/javascript");
3f0f4bddc4b10a4f77e2ae42c0ba8cf4d2d1ec7b
文件:房屋 光明屋.png
6
105
910
292
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:光明屋.png]]至[[文件:房屋 光明屋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 三角顶小屋.png
6
116
911
304
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:三角顶小屋.png]]至[[文件:房屋 三角顶小屋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 一厅一室房.png
6
121
913
318
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:一厅一室房.png]]至[[文件:房屋 一厅一室房.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 共管公寓.png
6
104
914
291
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:共管公寓.png]]至[[文件:房屋 共管公寓.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 公寓综合楼.png
6
294
915
632
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:公寓综合楼.png]]至[[文件:房屋 公寓综合楼.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 匠心小栋.png
6
109
916
296
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:匠心小栋.png]]至[[文件:房屋 匠心小栋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 农舍.png
6
114
917
302
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:农舍.png]]至[[文件:房屋 农舍.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 双尖塔楼.png
6
119
918
307
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:双尖塔楼.png]]至[[文件:房屋 双尖塔楼.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 别墅.png
6
125
919
314
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:别墅.png]]至[[文件:房屋 别墅.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 原木屋.png
6
122
920
311
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:原木屋.png]]至[[文件:房屋 原木屋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 双层楼房.png
6
118
921
306
2023-05-08T05:28:34Z
13253902
7
13253902移动页面[[文件:双层楼房.png]]至[[文件:房屋 双层楼房.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 合租房.png
6
107
922
294
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:合租房.png]]至[[文件:房屋 合租房.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 小屋.png
6
19
923
309
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:小屋.png]]至[[文件:房屋 小屋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:房屋 复式公寓.png
6
102
924
289
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:复式公寓.png]]至[[文件:房屋 复式公寓.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 圆木小屋.png
6
123
925
312
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:圆木小屋.png]]至[[文件:房屋 圆木小屋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
962
925
2023-05-09T12:22:31Z
13253902
7
13253902上传[[文件:房屋 圆木小屋.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 商住综合楼.png
6
117
926
305
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:商住综合楼.png]]至[[文件:房屋 商住综合楼.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 折顶式小屋.png
6
124
927
313
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:折顶式小屋.png]]至[[文件:房屋 折顶式小屋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带阁楼的高层建筑.png
6
127
928
316
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:带阁楼的高层建筑.png]]至[[文件:房屋 带阁楼的高层建筑.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带泳池的高层.png
6
292
929
630
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:带泳池的高层.png]]至[[文件:房屋 带泳池的高层.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带阳台的房子.png
6
291
930
629
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:带阳台的房子.png]]至[[文件:房屋 带阳台的房子.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 摩登高层.png
6
113
931
319
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:摩登高层.png]]至[[文件:房屋 摩登高层.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带花园的高层.png
6
128
932
317
2023-05-08T05:28:35Z
13253902
7
13253902移动页面[[文件:带花园的高层.png]]至[[文件:房屋 带花园的高层.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 海螺屋.png
6
106
933
293
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:海螺屋.png]]至[[文件:房屋 海螺屋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 科德角式小屋.png
6
15
934
297
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:科德角式小屋.png]]至[[文件:房屋 科德角式小屋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:房屋 牧人小舍.png
6
43
935
121
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:牧人小舍.png]]至[[文件:房屋 牧人小舍.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 普通高层.png
6
115
936
303
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:普通高层.png]]至[[文件:房屋 普通高层.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 瓷砖高层.png
6
126
937
315
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:瓷砖高层.png]]至[[文件:房屋 瓷砖高层.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 独户住房.png
6
101
938
288
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:独户住房.png]]至[[文件:房屋 独户住房.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 维多利亚联排别墅.png
6
120
939
308
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:维多利亚联排别墅.png]]至[[文件:房屋 维多利亚联排别墅.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 联排别墅.png
6
111
940
299
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:联排别墅.png]]至[[文件:房屋 联排别墅.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 美式四角楼.png
6
112
941
300
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:美式四角楼.png]]至[[文件:房屋 美式四角楼.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 老房屋.png
6
110
942
298
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:老房屋.png]]至[[文件:房屋 老房屋.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 花园式公寓.png
6
108
943
295
2023-05-08T05:28:36Z
13253902
7
13253902移动页面[[文件:花园式公寓.png]]至[[文件:房屋 花园式公寓.png]],不留重定向:移动房屋图片
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 公寓大楼.png
6
103
944
290
2023-05-08T05:30:03Z
13253902
7
13253902移动页面[[文件:公寓大楼.png]]至[[文件:房屋 公寓大楼.png]],不留重定向
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 高层建筑.png
6
293
945
631
2023-05-08T05:30:42Z
13253902
7
13253902移动页面[[文件:高层建筑.png]]至[[文件:房屋 高层建筑.png]],不留重定向
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
模板:房屋
10
11
946
905
2023-05-08T05:31:44Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间={{{时间|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{{1|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币
! width=20%|建造时间
! width=20%|占地面积
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间|}}}|{{转换时间|{{{时间|}}}}}|}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! width=20%|获得人口
! width=20%|获得经验
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br>
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
所需金币:{{{金币|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:房屋]]</includeonly>
f6adbdc2f5ae10002fcea9541743a559474dbb23
947
946
2023-05-08T05:34:10Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间={{{时间|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{#replace:{{PAGENAME}}|/| }}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币
! width=20%|建造时间
! width=20%|占地面积
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间|}}}|{{转换时间|{{{时间|}}}}}|}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! width=20%|获得人口
! width=20%|获得经验
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br>
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
所需金币:{{{金币|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:房屋]]</includeonly>
f00efa6b94e712d307ecd057be3d733de0dc33e8
948
947
2023-05-08T05:35:28Z
13253902
7
wikitext
text/x-wiki
{{#set:
|中文={{{中文|}}}
|金币={{{金币|}}}
|人口={{{人口|}}}
|经验={{{经验|}}}
|占地={{{占地|}}}
|时间={{{时间|}}}
|最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
}}
{{面包屑}}
<!--页面开始-->
<div class="container main">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
{| class="wikitable" style="text-align: center;width:100%"
! {{{中文|}}}
|-
|<includeonly>[[文件:{{#replace:{{PAGENAME}}|/|_}}.png|class=wiki-bot-img img-kk|link=]]</includeonly>
|}
</div>
<div class="col-xs-12 col-sm-9 col-md-2 col-lg-2">
{| class="wikitable" style="text-align: center;width:100%"
! 最大数量
|-
| style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}
|-
! 解锁等级
|-
| {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}}
|}
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
{| class="wikitable" style="text-align: center;width:100%"
! width=20%|所需金币
! width=20%|建造时间
! width=20%|占地面积
|-
| style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间|}}}|{{转换时间|{{{时间|}}}}}|}}
| style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}}
|-
! width=20%|获得人口
! width=20%|获得经验
|-
| style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}}
|}
</div>
</div>
<!-- QQ机器人显示信息开始 -->
<div class="wiki-bot hidden">
最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br>
解锁等级:{{{等级|}}}<br>
占地面积:{{{占地|}}}<br>
所需金币:{{{金币|}}}<br>
建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br>
获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br>
获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}
</div>
<!-- QQ机器人显示信息结束 -->
<includeonly>[[分类:房屋]]</includeonly>
b0415857e690f64e2a7c37e8a4a136fd60ef35a0
模板:房屋表
10
24
949
906
2023-05-08T05:36:37Z
13253902
7
wikitext
text/x-wiki
<noinclude>
{| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;"
! 房屋
! 最大数量
! 所需金币
! 获得人口
! 建造时间
{{#ask:[[分类:房屋]]
|?中文
|?最大数量
|?金币
|?人口
|?经验
|?时间
|?占地
|named args=1
|link=none
|sort=金币
|order=asc
|headers=hide
|template=房屋表
|format=template
|limit=3
|searchlabel=
}}
|}</noinclude><includeonly>|-
|[[文件:{{#replace:{{{1|}}}|/|_}}.png|100px|class=img-kk|link={{{1|}}}]]<br>[[{{{1|}}}|{{{中文|}}}]]
| style="font-size:2em;"| {{{最大数量|}}}
| style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}
| style="font-size:2vw;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}}
| style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{转换时间|{{{时间|}}}}}
</includeonly>
5d12da07eb893a95716fb5fed6793ef5c08dda72
分类:社区建筑
14
374
950
2023-05-08T06:21:58Z
13253902
7
创建空白页面
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
房屋/花园式公寓
0
74
951
884
2023-05-09T08:30:29Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=花园式公寓
|等级=31、35、37、39、90
|金币=1440
|人口=80
|经验=80
|占地=1×2
|时间=960
}}
b042060227fb1781432a7ae722d01b9923bffe0c
房屋/光明屋
0
81
952
891
2023-05-09T08:30:45Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=光明屋
|等级=50、51、64、84
|金币=7500
|人口=150
|经验=150
|占地=1×2
|时间=1800
}}
8b3e45926bafaafbd2068757cda4c7fcac18a38e
房屋/瓷砖高层
0
82
953
892
2023-05-09T08:30:48Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=瓷砖高层
|等级=52、53、66、68、86
|金币=9500
|人口=190
|经验=190
|占地=1×2
|时间=1920
}}
a00b17c0bf4b73f25389dab8d461bc6f14c398ec
房屋/摩登高层
0
84
954
894
2023-05-09T08:30:52Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=摩登高层
|等级=56、57、74、96
|金币=13500
|人口=270
|经验=270
|占地=1×2
|时间=2040
}}
c6cea54b0b6f44eee643d6f423e155611f4ef5ef
房屋/原木屋
0
94
955
896
2023-05-09T08:30:56Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=原木屋
|等级=62、64、66、80、88
|金币=19000
|人口=380
|经验=380
|占地=1×2
|时间=2160
}}
041e981842c48ba07a2e75dd2d8caaaa1c50d969
房屋/双尖塔楼
0
86
956
897
2023-05-09T08:30:58Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=双尖塔楼
|等级=68、70、84、86
|金币=21000
|人口=420
|经验=420
|占地=1×2
|时间=2160
}}
d54f968d88191fbc93804371462c99bc4941bac3
房屋/公寓综合楼
0
279
957
900
2023-05-09T08:31:04Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=公寓综合楼
|等级=86、90、98
|金币=46400
|人口=580
|经验=580
|占地=1×2
|时间=2520
}}
26d2042d85d7c413848f2177e240805146bb7de1
房屋/带阳台的房子
0
280
958
901
2023-05-09T08:31:06Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=带阳台的房子
|等级=88、98
|金币=51200
|人口=640
|经验=640
|占地=1×2
|时间=2520
}}
f9ab6a10edfc8a31deba38775c742d0ca975d27c
房屋/共管公寓(90)
0
283
959
902
2023-05-09T08:31:08Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=共管公寓
|等级=90、96、98
|金币=56000
|人口=700
|经验=700
|占地=1×2
|时间=2640
}}
4bdb5ea8baf9750c3572836f39ecc60086f799b5
房屋/高层建筑
0
281
960
903
2023-05-09T08:31:11Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=高层建筑
|等级=92、94
|金币=61000
|人口=760
|经验=760
|占地=1×2
|时间=2640
}}
38f6acf334f42c47f6ea54f1d9e81e863f04dc1d
房屋/带泳池的高层
0
282
961
904
2023-05-09T08:31:13Z
13253902
7
wikitext
text/x-wiki
{{房屋
|中文=带泳池的高层
|等级=92、94、96
|金币=66000
|人口=820
|经验=820
|占地=1×2
|时间=2760
}}
f6515429dbd41db13c584a92ca15b4d3a2d2582f
文件:房屋 折顶式小屋.png
6
124
963
927
2023-05-09T12:22:31Z
13253902
7
13253902上传[[文件:房屋 折顶式小屋.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 双层楼房.png
6
118
964
921
2023-05-09T12:22:32Z
13253902
7
13253902上传[[文件:房屋 双层楼房.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 别墅.png
6
125
965
919
2023-05-09T12:22:33Z
13253902
7
13253902上传[[文件:房屋 别墅.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 瓷砖高层.png
6
126
966
937
2023-05-09T12:22:33Z
13253902
7
13253902上传[[文件:房屋 瓷砖高层.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带阁楼的高层建筑.png
6
127
967
928
2023-05-09T12:22:34Z
13253902
7
13253902上传[[文件:房屋 带阁楼的高层建筑.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带花园的高层.png
6
128
968
932
2023-05-09T12:22:35Z
13253902
7
13253902上传[[文件:房屋 带花园的高层.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带阳台的房子.png
6
291
969
930
2023-05-09T12:22:35Z
13253902
7
13253902上传[[文件:房屋 带阳台的房子.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 带泳池的高层.png
6
292
970
929
2023-05-09T12:22:36Z
13253902
7
13253902上传[[文件:房屋 带泳池的高层.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 独户住房.png
6
101
971
938
2023-05-09T12:22:37Z
13253902
7
13253902上传[[文件:房屋 独户住房.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 复式公寓.png
6
102
972
924
2023-05-09T12:22:38Z
13253902
7
13253902上传[[文件:房屋 复式公寓.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 高层建筑.png
6
293
973
945
2023-05-09T12:22:39Z
13253902
7
13253902上传[[文件:房屋 高层建筑.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 公寓大楼.png
6
103
974
944
2023-05-09T12:22:40Z
13253902
7
13253902上传[[文件:房屋 公寓大楼.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 公寓综合楼.png
6
294
975
915
2023-05-09T12:22:41Z
13253902
7
13253902上传[[文件:房屋 公寓综合楼.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 共管公寓(90).png
6
375
976
2023-05-09T12:22:42Z
13253902
7
基于MsUpload的文件上传
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 共管公寓.png
6
104
977
914
2023-05-09T12:22:43Z
13253902
7
13253902上传[[文件:房屋 共管公寓.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 光明屋.png
6
105
978
910
2023-05-09T12:22:44Z
13253902
7
13253902上传[[文件:房屋 光明屋.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 海螺屋.png
6
106
979
933
2023-05-09T12:22:45Z
13253902
7
13253902上传[[文件:房屋 海螺屋.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 合租房.png
6
107
980
922
2023-05-09T12:22:46Z
13253902
7
13253902上传[[文件:房屋 合租房.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 花园式公寓.png
6
108
981
943
2023-05-09T12:22:47Z
13253902
7
13253902上传[[文件:房屋 花园式公寓.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 匠心小栋.png
6
109
982
916
2023-05-09T12:22:48Z
13253902
7
13253902上传[[文件:房屋 匠心小栋.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 科德角式小屋.png
6
15
983
934
2023-05-09T12:22:49Z
13253902
7
13253902上传[[文件:房屋 科德角式小屋.png]]的新版本
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:房屋 老房屋.png
6
110
984
942
2023-05-09T12:22:50Z
13253902
7
13253902上传[[文件:房屋 老房屋.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 联排别墅.png
6
111
985
940
2023-05-09T12:22:51Z
13253902
7
13253902上传[[文件:房屋 联排别墅.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 美式四角楼.png
6
112
986
941
2023-05-09T12:22:52Z
13253902
7
13253902上传[[文件:房屋 美式四角楼.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 摩登高层.png
6
113
987
931
2023-05-09T12:22:53Z
13253902
7
13253902上传[[文件:房屋 摩登高层.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 牧人小舍.png
6
43
988
935
2023-05-09T12:22:54Z
13253902
7
13253902上传[[文件:房屋 牧人小舍.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 农舍.png
6
114
989
917
2023-05-09T12:22:55Z
13253902
7
13253902上传[[文件:房屋 农舍.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 普通高层.png
6
115
990
936
2023-05-09T12:22:56Z
13253902
7
13253902上传[[文件:房屋 普通高层.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 三角顶小屋.png
6
116
991
911
2023-05-09T12:22:57Z
13253902
7
13253902上传[[文件:房屋 三角顶小屋.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 商住综合楼.png
6
117
992
926
2023-05-09T12:22:58Z
13253902
7
13253902上传[[文件:房屋 商住综合楼.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 双尖塔楼.png
6
119
993
918
2023-05-09T12:22:59Z
13253902
7
13253902上传[[文件:房屋 双尖塔楼.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 维多利亚联排别墅.png
6
120
994
939
2023-05-09T12:23:00Z
13253902
7
13253902上传[[文件:房屋 维多利亚联排别墅.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 小屋.png
6
19
995
923
2023-05-09T12:23:01Z
13253902
7
13253902上传[[文件:房屋 小屋.png]]的新版本
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
文件:房屋 一厅一室房.png
6
121
996
913
2023-05-09T12:23:02Z
13253902
7
13253902上传[[文件:房屋 一厅一室房.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
文件:房屋 原木屋.png
6
122
997
920
2023-05-09T12:23:03Z
13253902
7
13253902上传[[文件:房屋 原木屋.png]]的新版本
wikitext
text/x-wiki
基于MsUpload的文件上传
a13cb97e12beb36c5e09351cbbe1d01f12e99668
沙盒
0
32
998
433
2023-05-31T14:40:24Z
13253902
7
编辑数据
wikitext
text/x-wiki
页面内容
12af9388dc4c96cfd7505525235b818b85fe5237
1000
998
2023-06-16T05:52:21Z
13253902
7
wikitext
text/x-wiki
{| id="table" data-toggle="table" data-search="true" data-show-columns="true" data-show-multi-sort="true" class="wikitable"
|-
! data-field="name" data-sortable="true"|名称
! data-field="rank" data-sortable="true"|等级
! data-field="size" data-sortable="true"|大小
|-
|111
|58
|1x1
|-
|222
|60
|2x2
|-
|333
|62
|3x2
|}
2c5a1d876babcad6c00b19d836977b2f7b2be722
1002
1000
2023-06-16T06:32:19Z
13253902
7
wikitext
text/x-wiki
{| id="table" data-toggle="table" data-search="true" data-show-columns="true" data-show-multi-sort="true" class="wikitable"
|- id="thead"
! data-field="name" data-sortable="true"|名称
! data-field="rank" data-sortable="true"|等级
! data-field="size" data-sortable="true"|大小
|-
|111
|58
|1x1
|-
|222
|60
|2x2
|-
|333
|62
|3x2
|}
a71ad6d5b475d4dc1abda9d6f2dcf8f810058cd3
1005
1002
2023-06-16T07:09:59Z
13253902
7
wikitext
text/x-wiki
<div class="bikit-loader" data-src="MediaWiki:Check-toggle.js" data-mime="text/javascript"></div>
<!-- {{#Widget:沙盒}} -->
{| id="table" data-toggle="table" data-search="true" data-show-columns="true" data-show-multi-sort="true" class="wikitable"
|- id="thead"
! data-field="name" data-sortable="true"|名称
! data-field="rank" data-sortable="true"|等级
! data-field="size" data-sortable="true"|大小
|-
|111
|58
|1x1
|-
|222
|60
|2x2
|-
|333
|62
|3x2
|}
ed5cb07f4255775d1b9e4d7a9351ac60343d2c4d
1008
1005
2023-06-16T14:20:57Z
13253902
7
wikitext
text/x-wiki
{{#Widget:沙盒}}
{| id="table" data-toggle="table" data-search="true" data-show-multi-sort="true" data-show-multi-sort-button="true" class="wikitable text-center"
|- id="thead"
! data-field="name" data-sortable="true"|名称
! data-field="rank" data-sortable="true"|等级
! data-field="size" data-sortable="true"|大小
|-
|111
|58
|1x1
|-
|222
|60
|2x2
|-
|333
|62
|3x2
|}{{#css:
.bootstrap-table .fixed-table-container .fixed-table-body{height:auto!important;}
.multi-sort{height: 34px;}
}}
39fbe17805576a56c084dd46b3da11569f2c16a3
Widget:沙盒
274
377
1001
2023-06-16T05:53:53Z
13253902
7
创建页面
wikitext
text/x-wiki
<includeonly><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
d3056db454a0da0ee2dac5e3ed9e8a1384d0511c
1003
1001
2023-06-16T06:33:22Z
13253902
7
wikitext
text/x-wiki
<includeonly><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.bootcss.com/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
40b7f0fc3313bc5f13705ecef5f924dd67e14587
1006
1003
2023-06-16T12:04:46Z
13253902
7
wikitext
text/x-wiki
<includeonly><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
ab855a108ecf170028249c8db184284330ff892f
1007
1006
2023-06-16T13:33:18Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
afa19b32cab42193d6d8f6f21fa762be6ceb0bb0
1009
1007
2023-06-16T14:21:39Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
431f1a954bb96ac65bf4d14c3d8ecaf85959708c
1010
1009
2023-06-16T14:22:51Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
d2e1c9d1a8132d937da72417bbabc133b022c5d1
1011
1010
2023-06-16T14:23:56Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
dff453d6ad469d74b35239cc3983d35e5a87295f
1012
1011
2023-06-16T14:24:17Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
afa19b32cab42193d6d8f6f21fa762be6ceb0bb0
1013
1012
2023-06-19T05:46:26Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
7373b6a155e3673088e77a3b9712af92972c2778
MediaWiki:Test.js
8
378
1004
2023-06-16T07:07:57Z
13253902
7
创建页面
javascript
text/javascript
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
mw.loader.load( 'https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css', 'text/css' );
mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js?action=raw&&ctype=text/javascript');
mw.loader.load('https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js?action=raw&&ctype=text/javascript');
mw.loader.load('https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js?action=raw&&ctype=text/javascript');
7bfcbc2d8a128cd62b8ff2e17e85dc11938c8087
Widget:沙盒
274
377
1014
1013
2023-06-19T05:47:19Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
84472ea5c60bf044da78b1d6027fd1adba4db361
1015
1014
2023-06-19T05:47:56Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
fdaf4f1654c990defb3a2486b2e995bed2b8d18d
1016
1015
2023-06-19T05:49:11Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
e0bf04c2b4ce3f03aeb9bd6112e631fc6c90e403
1018
1016
2023-06-20T05:38:15Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
dec90cd71e390785739c13bac7d7c02cce70af48
1019
1018
2023-06-20T05:41:20Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
$(".multi-sort").on("click",function(){
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
</includeonly>
41abf7f4763d60f0af58185f144cf40b26182926
1020
1019
2023-06-20T05:44:15Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
<script>
$(function(){
$(".multi-sort").on("click",function(){
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
});
</script>
</includeonly>
c7dfcec47d3c1bc20b5118cbd182f656a3d13110
1021
1020
2023-06-20T06:17:00Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
<script>
$(function(){
$(".multi-sort").on("click",function(){
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
$('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加');
$('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除');
$('th:contains("Column")').text('列');
$('th:contains("Order")').text('排序');
$('td:contains("Sort by")').text('排序依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
</script>
</includeonly>
10614348fab12b7c21cb0ad00b420a895bd3febf
1023
1021
2023-06-20T13:32:48Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
<script>
$(function(){
$(".multi-sort").on("click",function(){
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
$("#add").on("mouseleave ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加');
$('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除');
$('#sortModal_tableLabel').text('多重排序');
$('th:contains("Column")').text('列');
$('th:contains("Order")').text('排序');
$('td:contains("Sort by")').text('排序依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
$('.multi-sort-order-button').text('排序');
$('button:contains("Cancel")').text('取消');
});
</script>
</includeonly>
05c648c4f9068d49d7f7f605b52317d24f55bdb2
1024
1023
2023-06-20T13:35:34Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
<script>
$(function(){
$(".multi-sort").on("click",function(){
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
$("#add").on("mouseleave ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$("#add").on("blur ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加');
$('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除');
$('#sortModal_tableLabel').text('多重排序');
$('th:contains("Column")').text('列');
$('th:contains("Order")').text('排序');
$('td:contains("Sort by")').text('排序依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
$('.multi-sort-order-button').text('排序');
$('button:contains("Cancel")').text('取消');
});
</script>
</includeonly>
6cbcb82fb7235d49bf6a9ad99dd57f6f3116502e
1025
1024
2023-06-20T14:00:01Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
<script>
$(function(){
$(".multi-sort").on("click",function(){
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
$("#add").on("mouseleave ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$("#add").on("blur ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
if ($("#sortModal_table").hasClass("in")) {
$("body").css("padding-right", "0");
}
else{
$("body").css("padding-right", "0");
}
$('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加');
$('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除');
$('#sortModal_tableLabel').text('多重排序');
$('th:contains("Column")').text('列');
$('th:contains("Order")').text('排序');
$('td:contains("Sort by")').text('排序依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
$('.multi-sort-order-button').text('排序');
$('button:contains("Cancel")').text('取消');
});
</script>
</includeonly>
3ec26c73d3cda2a8c0e6321fe4560c33a96d91b1
1026
1025
2023-06-20T14:09:46Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
<script>
$(function(){
$(".multi-sort").on("click",function(){
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
$("#add").on("mouseleave ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$("#add").on("blur ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加');
$('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除');
$('#sortModal_tableLabel').text('多重排序');
$('th:contains("Column")').text('列');
$('th:contains("Order")').text('排序');
$('td:contains("Sort by")').text('排序依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
$('.multi-sort-order-button').text('排序');
$('button:contains("Cancel")').text('取消');
});
</script>
</includeonly>
6cbcb82fb7235d49bf6a9ad99dd57f6f3116502e
1029
1026
2023-06-20T14:30:40Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('.thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
<script>
$(function(){
$(".multi-sort").on("click",function(){
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
$("#add").on("mouseleave ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$("#add").on("blur ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加');
$('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除');
$('#sortModal_tableLabel').text('多重排序');
$('th:contains("Column")').text('列');
$('th:contains("Order")').text('排序');
$('td:contains("Sort by")').text('排序依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
$('.multi-sort-order-button').text('排序');
$('button:contains("Cancel")').text('取消');
});
</script>
</includeonly>
7f423332e6bd8a3696b0664e9a0a9c5e7bba2c77
1030
1029
2023-07-07T02:04:16Z
13253902
7
wikitext
text/x-wiki
<includeonly>
<!--
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
-->
<link rel="stylesheet" href="https://cdn.staticfile.org/bootstrap-table/1.22.1/bootstrap-table.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('tbody').contents().unwrap();
$('.thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.22.1/bootstrap-table.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.22.1/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="https://cdn.staticfile.org/bootstrap-table/1.22.1/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js"></script>
<script>
$(function(){
$(".multi-sort").on("click",function(){
$(".multi-sort-order-button").attr("data-dismiss", "modal");
});
$("#add").on("mouseleave ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$("#add").on("blur ",function(){
$('td:contains("Then by")').text('次要依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
});
$('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加');
$('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除');
$('#sortModal_tableLabel').text('多重排序');
$('th:contains("Column")').text('列');
$('th:contains("Order")').text('排序');
$('td:contains("Sort by")').text('排序依据');
$('option[value="asc"]').text('升序');
$('option[value="desc"]').text('降序');
$('.multi-sort-order-button').text('排序');
$('button:contains("Cancel")').text('取消');
});
</script>
</includeonly>
efedf93f4badbf2b6fb38a0a03a61186e24eb895
MediaWiki:Test.js
8
378
1017
1004
2023-06-19T05:53:43Z
13253902
7
javascript
text/javascript
// mw.loader.load('https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js?action=raw&&ctype=text/javascript');
$(document).ready(function() {
$('tbody').contents().unwrap();
$('#thead').wrap('<thead></thead>');
$('thead').nextAll('tr').wrapAll('<tbody></tbody>');
});
// mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css','text/css');
mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css','text/css');
// mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js?action=raw&&ctype=text/javascript');
mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js?action=raw&&ctype=text/javascript');
mw.loader.load('https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js?action=raw&&ctype=text/javascript');
mw.loader.load('https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js?action=raw&&ctype=text/javascript');
abfce48b257f74c78c13ea1e6d8b03da9956081d
沙盒
0
32
1022
1008
2023-06-20T13:17:19Z
13253902
7
wikitext
text/x-wiki
{{#Widget:沙盒}}
{| id="table" data-toggle="table" data-search="true" data-show-multi-sort="true" data-show-multi-sort-button="true" class="wikitable text-center"
|- id="thead"
! data-field="name" data-sortable="true"|名称
! data-field="rank" data-sortable="true"|等级
! data-field="size" data-sortable="true"|大小
|-
|111
|58
|1x1
|-
|222
|60
|2x2
|-
|333
|62
|3x2
|}{{#css:
.bootstrap-table .fixed-table-container .fixed-table-body{height:auto!important;}
.multi-sort{height: 34px;}
#multi-sort{margin-top: 15px;}
}}
c8ba73fe74772e7a83860a86d254903ad41e0a30
1027
1022
2023-06-20T14:23:09Z
13253902
7
wikitext
text/x-wiki
{{#Widget:沙盒}}
{| id="table" data-toggle="table" data-search="true" data-show-multi-sort="true" data-show-multi-sort-button="true" class="wikitable text-center"
|- id="thead"
! data-field="name" data-sortable="true"|名称
! data-field="rank" data-sortable="true"|等级
! data-field="size" data-sortable="true"|大小
|-
|111
|58
|1x1
|-
|222
|60
|2x2
|-
|333
|62
|3x2
|}{{#css:
.bootstrap-table .fixed-table-container .fixed-table-body{height:auto!important;}
.multi-sort{height: 34px;}
#multi-sort{margin-top: 15px;}
body{padding:0!important;}
}}
3c6806c9ba12c8bb4d528f9048d129819726aafc
1028
1027
2023-06-20T14:30:15Z
13253902
7
wikitext
text/x-wiki
{{#Widget:沙盒}}
{| id="table" data-toggle="table" data-search="true" data-show-multi-sort="true" data-show-multi-sort-button="true" class="wikitable text-center"
|- class="thead"
! data-field="name" data-sortable="true"|名称
! data-field="rank" data-sortable="true"|等级
! data-field="size" data-sortable="true"|大小
|-
|111
|58
|1x1
|-
|222
|60
|2x2
|-
|333
|62
|3x2
|}{{#css:
.bootstrap-table .fixed-table-container .fixed-table-body{height:auto!important;}
.multi-sort{height: 34px;}
#multi-sort{margin-top: 15px;}
body{padding:0!important;}
}}
81b9733156bee5bc4a42806969bac48d1de774fe